在Android O中断开广播充电器

Cil*_*nco 8 android android-jobscheduler android-broadcastreceiver android-8.0-oreo

现在已经发布了Android O的最终API,并且以下所有广播都没有列入白名单,遇到以下问题:

在我的应用程序(API的目标25)我现在有一个BroadcastReceiver它侦听的系统事件ACTION_POWER_CONNECTEDACTION_POWER_DISCONNECTED.现在我想更新我的应用程序以定位Android O,但随着此版本的出现,广播行为发生了巨大变化:

针对Android O的应用无法再在其清单中为隐式广播注册广播接收器.隐式广播是一种不专门针对该应用的广播.

由于两个广播都是隐含的,我只能通过该Context.registerReceiver()方法注册它们,但问题就出现了:一旦我的应用程序被系统杀死或系统清除我的应用程序的内存(由于低 -设备的内存)广播注册将丢失.

为了避免这个问题,我可以使用JobSchedulerAPI和setRequiresCharging方法,ACTION_POWER_CONNECTEDACTION_POWER_DISCONNECTED我必须使用该registerReceiver方法.

由于我的应用程序控制设备的音量(基于这些事件),因此没有错过任何这些事件非常重要.那么我如何才能安全地侦听Android O中断开连接的电源事件?

顺便说一句.我对WIFI断开事件有同样的问题.

编辑:我希望没有来自前台服务的通知我这样做

gre*_*f82 2

作业可以延迟,不受系统任何限制。setOverrideDeadline 方法仅使用尽力而为的策略,因此在这种情况下,您可以将目标 SDK 保持为 25 或使用前台服务。Foregournd 服务可能会被系统杀死,但概率非常低。