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