现在,Android O 的最终 API 已经发布,并且以下广播都没有被列入白名单,我遇到了以下问题:
在我的应用程序(目标 API 25)中,我目前有一个BroadcastReceiver
监听 和 的系统ACTION_POWER_CONNECTED
事件ACTION_POWER_DISCONNECTED
。现在我想更新我的应用程序以针对 Android O,但随着这个版本的发布,广播行为发生了巨大变化:
以 Android O 为目标的应用无法再在其清单中为隐式广播注册广播接收器。隐式广播是不专门针对该应用程序的广播。
由于这两个广播都是隐式的,我只能通过该Context.registerReceiver()
方法为它们注册,但随之而来的问题是:一旦我的应用程序的进程被系统杀死或系统清除了我的应用程序的内存(由于低-设备内存)广播注册将丢失。
为了避免这个问题,我可以将JobScheduler
API 与setRequiresCharging
方法一起使用,ACTION_POWER_CONNECTED
但ACTION_POWER_DISCONNECTED
我必须使用registerReceiver
方法。
由于我的应用程序控制设备的音量(基于这些事件),因此不会错过任何这些事件非常重要。那么如何在 Android O 中安全地监听断开电源事件呢?
顺便提一句。我对 WIFI 断开连接事件有同样的问题。
编辑:我很乐意在没有前台服务通知的情况下执行此操作