我正在尝试针对Doze
和AppStandBy
优化我们的应用程序,并实现了 测试应用程序以了解使用不同后台调度程序时系统的行为。
但是,我对使用AlarmManager
和Observable.intervall()
时的行为感到非常困惑。
警报管理器
我已经通过Activity
注册了一个警报,然后通过 adb 在低电位中带来了设备。 系统按预期运行,未触发警报。
Rx-Observable.intervall
我已经通过Activity
启动了Service
,然后在低打瞌睡中通过 adb 带来了设备。Service
不是前台服务。 在我眼中,系统的行为不符合预期,并且滴答声连续传递到应用程序。
为了证实该设备确实处于Doze
我还用adb bugreport
查看了电池统计数据,历史学家告诉我该设备在这段时间内处于Doze
状态。
是否有任何文档记录不同的调度程序如何在Doze
或AppStandBy
中工作?
感谢您的任何建议。
问题似乎是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
的警报