Android 具有处理程序的前台服务的CPU使用率
当应用程序关闭、屏幕锁定和打瞌睡模式激活时,如何确保前台服务可以使用CPU 有一些handlerthreads,我在前台服务中使用postdelayed方法计划任务。我列出了我的测试用例:Android 具有处理程序的前台服务的CPU使用率,android,foreground,android-doze,Android,Foreground,Android Doze,当应用程序关闭、屏幕锁定和打瞌睡模式激活时,如何确保前台服务可以使用CPU 有一些handlerthreads,我在前台服务中使用postdelayed方法计划任务。我列出了我的测试用例: 前台服务中的部分唤醒锁定: 处理者从不拖延 无唤醒锁,设备通过adb连接: 处理程序从不延迟。(打瞌睡模式、背景情况、屏幕锁定都已尝试。) 没有wakelock,应用程序在屏幕上: 处理者从不拖延 没有wakelock,应用程序在后台,应用程序未销毁: 处理程序可能会延迟 无唤醒锁定、屏幕打开、应用程序已销毁
处理者从不拖延
处理程序从不延迟。(打瞌睡模式、背景情况、屏幕锁定都已尝试。)
处理者从不拖延
处理程序可能会延迟
处理程序可能会延迟
处理程序总是在不知不觉中延迟
处理程序总是在不知不觉中延迟
文档中并没有太多关于前台服务cpu使用限制的内容。是否存在与前台服务相关的bug 处理程序的
postDelayed()
正在按预期运行。
基于postDelayed()
:
使可运行的r添加到消息队列中,以运行
经过指定的时间后。runnable将被运行
此处理程序附加到的线程上。时基是
uptimeMillis()深度睡眠时间会增加额外的延迟
执行
您需要创建挂起的意图或未绑定的服务前台服务不受dozeYes限制,它们不受doze限制,这意味着即使处于doze模式,android也不太可能终止服务。然而,线程似乎永远不会得到cpu时间。感谢您指出这一点。现在,我在前台服务中使用定时器和定时器任务,但当手机进入剂量模式时,它仍然不会按时触发。如何确保我的前台服务可以随心所欲地使用cpu?如果您希望您的服务能够在睡眠模式下使用cpu,您可以获取确保cpu运行的信息;屏幕和键盘背光将允许熄灭。