1

如何确保在应用程序关闭、屏幕锁定和打盹模式处于活动状态时前台服务可以使用 CPU?

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

  1. 前台服务中的部分唤醒锁:
    处理程序从不延迟。
  2. 没有唤醒锁,设备通过 adb 连接:
    处理程序从不延迟。(打盹模式,后台情况,屏幕锁定都试过了。)
  3. 没有唤醒锁,应用程序在屏幕上:
    处理程序从不延迟。
  4. 没有唤醒锁,后台应用程序,应用程序未销毁:
    处理程序可能会延迟。
  5. 没有唤醒锁、屏幕开启、应用程序被破坏:
    处理程序可能会延迟。
  6. 没有唤醒锁,屏幕锁定:
    处理程序总是在不知不觉中延迟。
  7. 没有唤醒锁,打盹活动:
    处理程序总是在不知不觉中延迟。

文档没有太多关于前台服务 cpu 使用限制的说明。是否存在与前台服务相关的错误?

4

1 回答 1

1

处理程序的postDelayed()行为符合预期。基于以下文档postDelayed()

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

于 2018-04-07T04:21:21.623 回答