由于Android O对隐式广播施加限制,因此以下内容不再有效:
<receiver android:name=".model.PowerStateBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</intent-filter>
</receiver>
我考虑过注册ACTION_BOOT_COMPLETE
意图,启动服务并在那里注册java中ACTION_POWER_CONNECTED
的监听器,但该服务可能会被杀死。
我还考虑将JobScheduler
与setRequiresCharging(true)
一起使用,但根据docs:
出于工作目的,电池供电的设备“充电”与仅仅连接电源并不完全相同。如果设备非常繁忙,即使电源连接电池正在耗尽,具有此约束的作业也不会运行。在视频聊天等常见用例中可能会发生这种情况,特别是如果将设备插入USB而非墙上电源。
对于行为取决于知道充电器何时连接的应用程序(它是电池/充电应用程序),现在做这种行为的最佳方法是什么?