Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有处理程序的前台服务的CPU使用率_Android_Foreground_Android Doze - Fatal编程技术网

Android 具有处理程序的前台服务的CPU使用率

Android 具有处理程序的前台服务的CPU使用率,android,foreground,android-doze,Android,Foreground,Android Doze,当应用程序关闭、屏幕锁定和打瞌睡模式激活时,如何确保前台服务可以使用CPU 有一些handlerthreads,我在前台服务中使用postdelayed方法计划任务。我列出了我的测试用例: 前台服务中的部分唤醒锁定: 处理者从不拖延 无唤醒锁,设备通过adb连接: 处理程序从不延迟。(打瞌睡模式、背景情况、屏幕锁定都已尝试。) 没有wakelock,应用程序在屏幕上: 处理者从不拖延 没有wakelock,应用程序在后台,应用程序未销毁: 处理程序可能会延迟 无唤醒锁定、屏幕打开、应用程序已销毁

当应用程序关闭、屏幕锁定和打瞌睡模式激活时,如何确保前台服务可以使用CPU

有一些handlerthreads,我在前台服务中使用postdelayed方法计划任务。我列出了我的测试用例:

  • 前台服务中的部分唤醒锁定:
    处理者从不拖延
  • 无唤醒锁,设备通过adb连接:
    处理程序从不延迟。(打瞌睡模式、背景情况、屏幕锁定都已尝试。)
  • 没有wakelock,应用程序在屏幕上:
    处理者从不拖延
  • 没有wakelock,应用程序在后台,应用程序未销毁:
    处理程序可能会延迟
  • 无唤醒锁定、屏幕打开、应用程序已销毁:
    处理程序可能会延迟
  • 无唤醒锁定,屏幕锁定:
    处理程序总是在不知不觉中延迟
  • 无唤醒锁定,打瞌睡处于活动状态:
    处理程序总是在不知不觉中延迟

  • 文档中并没有太多关于前台服务cpu使用限制的内容。是否存在与前台服务相关的bug

    处理程序的
    postDelayed()
    正在按预期运行。 基于
    postDelayed()

    使可运行的r添加到消息队列中,以运行 经过指定的时间后。runnable将被运行 此处理程序附加到的线程上。时基是 uptimeMillis()深度睡眠时间会增加额外的延迟 执行


    您需要创建挂起的意图或未绑定的服务前台服务不受dozeYes限制,它们不受doze限制,这意味着即使处于doze模式,android也不太可能终止服务。然而,线程似乎永远不会得到cpu时间。感谢您指出这一点。现在,我在前台服务中使用定时器和定时器任务,但当手机进入剂量模式时,它仍然不会按时触发。如何确保我的前台服务可以随心所欲地使用cpu?如果您希望您的服务能够在睡眠模式下使用cpu,您可以获取确保cpu运行的信息;屏幕和键盘背光将允许熄灭。