1

我正在尝试优化我们的应用程序,Doze并且AppStandBy已经实现了一个测试应用程序,以了解使用不同后台调度程序时系统的行为。

但是,我对使用AlarmManagerand时的行为感到非常困惑Observable.intervall()

报警管理器

我已经通过 an 注册了一个警报Activity,然后在 Doze 中通过 adb 带来了设备。系统按预期运行,未触发警报。

Rx-Observable.intervall

我已经开始了Service一个Activity,然后在 Doze 中通过 adb 带来了设备。这Service不是前台服务。在我看来,系统的行为并不像预期的那样,并且滴答声会持续发送到应用程序。

为了验证该设备是否真的存在,Doze我还查看了电池统计信息adb bugreport,历史学家告诉我该设备Doze在那个时间段内存在。

是否有任何文档说明不同的调度程序如何工作DozeAppStandBy

感谢您的任何建议。

4

1 回答 1

1

问题似乎是adb保持 CPU 运行(如果设备是通过 USB 连接的),即使设备doze通过adb命令带来

$ adb shell dumpsys battery unplug

$ adb shell input keyevent KEYCODE_POWER

adb shell dumpsys deviceidle step

由(由 rxjava 使用)安排的间隔计时器ScheduledThreadPoolExecutor似乎不受模式限制,而是通过do 进行doze警报。AlarmManager

于 2017-06-29T08:12:44.127 回答