我正在为Doze和AppStandBy优化我们的应用程序,并实现了一个测试应用程序,以了解系统在使用不同的后台调度程序时的行为。
但是,我对使用AlarmManager和Observable.intervall()时的行为非常困惑。
AlarmManager
我已经通过一个Activity注册了一个警报,然后通过亚行在Doze带来了这个设备。系统按预期运行,警报不被触发。
Rx-Observable.intervall
我通过一个Service启动了一个Activity,然后通过亚行在Doze带来了这个设备。Service是而不是前台服务。在我看来,这个系统的表现并不像我所期望的那样,而且滴答声是连续地传递到应用程序中的。
为了证实这个设备是在Doze中的,我还用adb bugreport查看了电池的统计数据,历史学家告诉我,这个设备是在那个时间段内在Doze上的。
是否有文档说明不同的调度程序如何在Doze或AppStandBy中工作?
谢谢你的建议。
发布于 2017-06-29 08:12:44
问题似乎是adb保持CPU运行(如果设备是通过usb连接的),即使设备是通过adb命令引入doze的。
$ adb shell dumpsys battery unplug
$ adb shell input keyevent KEYCODE_POWER
adb shell dumpsys deviceidle step
ScheduledThreadPoolExecutor计划的间隔计时器(由rxjava使用)似乎不受doze模式的限制,而是通过AlarmManager do发出警报。
https://stackoverflow.com/questions/44804845
复制相似问题