android - 使用不同调度程序时 Android Doze 中的行为

标签 android doze

我正在尝试针对 DozeAppStandBy 优化我们的应用程序,并已实现 测试应用程序以了解系统在使用不同后台调度程序时的行为。

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

报警管理器

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

Rx-Observable.intervall

我已经通过 Activity 启动了 Service,然后通过 adb 进入 Doze 模式。 服务 不是前台服务。 在我看来,系统的行为并不像预期的那样,报价会持续传送到应用程序。

为了确认设备确实处于 Doze 状态,我还使用 adb bugreport 查看了电池统计数据,历史学家告诉我设备处于 Doze 状态 在那个时间跨度内。

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

感谢您的任何建议。

最佳答案

问题似乎是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/

相关文章:

android - 如何以编程方式重命名 Android 应用程序?

Android打瞌睡模式的影响

android - 如何构建一个不受打瞌睡影响的 radio 应用程序?

android - 如何避免三星设备的电池优化? (S6、S7 和 S8)

java - 如何设置变量imageview src?

android - 如何在不重新创建 Activity 的情况下更改 Android 应用程序中的语言?

android - 在 Android 上,有什么方法可以禁用 Spinner 的长按行为吗?

android - 当默认设置为 0 时,SharedPreferences getInt 返回 -1

Android NotificationListenerService 后台执行限制/Doze