Android 使用不同调度程序时打瞌睡的行为
Behaviour in Android Doze when using different Scheduler
我正在尝试针对 Doze
和 AppStandBy
优化我们的应用程序,并实施了
测试应用程序以了解使用不同后台调度程序时系统的行为。
但是我对使用 AlarmManager
和 Observable.intervall()
时的行为感到非常困惑。
AlarmManager
我已经通过 Activity
注册了一个警报,然后通过 adb 在 Doze 中引入了设备。
系统按预期运行,警报未触发。
Rx-Observable.intervall
我已经通过 Activity
启动了 Service
,然后通过 adb 在 Doze 中引入了设备。 Service
不是 前台服务。
在我看来,系统的行为并不像预期的那样,报价会持续传送到应用程序。
为了验证该设备确实在 Doze
,我还查看了 adb bugreport
的电池统计数据,历史学家告诉我该设备在那个时间跨度内处于 Doze
。
是否有任何文档说明不同的调度程序在 Doze
或 AppStandBy
中如何工作?
感谢任何建议。
问题似乎是 adb
保留了 CPU 运行(如果设备是通过 USB 连接的)即使设备通过 adb
使用命令
$ adb shell dumpsys battery unplug
$ adb shell input keyevent KEYCODE_POWER
adb shell dumpsys deviceidle step
ScheduledThreadPoolExecutor
调度的间隔计时器(由 rxjava 使用)似乎不受 doze
模式限制,但通过 AlarmManager
发出警报。
我正在尝试针对 Doze
和 AppStandBy
优化我们的应用程序,并实施了
测试应用程序以了解使用不同后台调度程序时系统的行为。
但是我对使用 AlarmManager
和 Observable.intervall()
时的行为感到非常困惑。
AlarmManager
我已经通过 Activity
注册了一个警报,然后通过 adb 在 Doze 中引入了设备。
系统按预期运行,警报未触发。
Rx-Observable.intervall
我已经通过 Activity
启动了 Service
,然后通过 adb 在 Doze 中引入了设备。 Service
不是 前台服务。
在我看来,系统的行为并不像预期的那样,报价会持续传送到应用程序。
为了验证该设备确实在 Doze
,我还查看了 adb bugreport
的电池统计数据,历史学家告诉我该设备在那个时间跨度内处于 Doze
。
是否有任何文档说明不同的调度程序在 Doze
或 AppStandBy
中如何工作?
感谢任何建议。
问题似乎是 adb
保留了 CPU 运行(如果设备是通过 USB 连接的)即使设备通过 adb
使用命令
$ adb shell dumpsys battery unplug
$ adb shell input keyevent KEYCODE_POWER
adb shell dumpsys deviceidle step
ScheduledThreadPoolExecutor
调度的间隔计时器(由 rxjava 使用)似乎不受 doze
模式限制,但通过 AlarmManager
发出警报。