我正在尝试针对 Doze
和 AppStandBy
优化我们的应用程序,并已实现
测试应用程序以了解系统在使用不同后台调度程序时的行为。
但是,我对使用 AlarmManager
和 Observable.intervall()
时的行为感到非常困惑。
报警管理器
我已经通过 Activity
注册了一个警报,然后通过 adb 将设备带入了 Doze。
系统按预期运行,警报未触发。
Rx-Observable.intervall
我已经通过 Activity
启动了 Service
,然后通过 adb 进入 Doze 模式。 服务
不是前台服务。
在我看来,系统的行为并不像预期的那样,报价会持续传送到应用程序。
为了确认设备确实处于 Doze
状态,我还使用 adb bugreport
查看了电池统计数据,历史学家告诉我设备处于 Doze 状态
在那个时间跨度内。
是否有任何文档说明不同的调度程序如何在 Doze
或 AppStandBy
中工作?
感谢您的任何建议。
最佳答案
问题似乎是adb
保持 CPU 运行(如果设备通过 USB 连接),即使设备被带到 doze
通过 adb
使用命令
$ adb shell dumpsys battery unplug
$ adb shell input keyevent KEYCODE_POWER
adb shell dumpsys deviceidle step
由 ScheduledThreadPoolExecutor
调度的间隔计时器(由 rxjava 使用)似乎不受限制 doze
模式,但通过 AlarmManager
发出警报做。
关于android - 使用不同调度程序时 Android Doze 中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44804845/