【发布时间】:2018-11-18 04:16:52
【问题描述】:
我有一个实现特定广播接收器服务的小部件,以检测 wifi 连接何时断开。
无论主要活动是否正在运行,它都能完美运行。
我遇到的问题是,当我停止主要活动时,广播接收器服务停止,因为我不再检测到 wifi 变化。
有没有一种方法可以在主要活动中幸存下来启动服务?
如果没有,还有其他机制吗?
【问题讨论】:
-
使您的广播接收器/服务处于其他进程中(使用
android:process)。 -
我还没有想到这种方法。它使解决方案更加复杂。有趣的是,BR 和警报管理器在主要活动的退出中幸存下来,但例如共享首选项却没有。感谢您的回复!
-
我不明白你的问题。如果您在
manifest文件中定义广播接收器。即使您的应用程序关闭,它也会被调用。然后你需要一个简单的if statement来检查你是否有连接。为什么需要服务? -
直到奥利奥都是如此。 O 停止 BR。我找到了一个解决方法:在警报管理器中启动的 BR 并没有在 O 中停止。所以我启动了一个具有高重复间隔的 AM。
-
@narb,如果您为您的接收器制定了一些待处理的意图并通过警报管理器安排它,那么您的活动是关闭还是打开都没有关系......即使在 API Oreo 上也是如此.
标签: android service widget broadcastreceiver android-widget