CPU 密集型服务需要 WakeLock 吗?

Do you need a WakeLock for CPU intensive services?

如果我的应用程序应该使用 WakeLock,我从文档中并不清楚。在所有情况下,这些服务都以 startForeground():

开始
  1. 处理音频并在 AudioTrack 上播放。 (CPU 强化)。
  2. 处理音频并编码为文件。 (CPU 强化)。
  3. 从 Google Play 服务接收定期位置更新(间隔 5-10 秒,可能 CPU 强度较低)。

我已经在我的设备(库存 Android 4.4 和 5.0)上测试了前两个 > 15 分钟(可能比他们需要停留的时间更长 运行),并且服务继续运行 屏幕关闭且没有 WakeLock。第三个我还没有测试过。我意识到设备可以具有不同的特性。

我应该为这些服务使用 WakeLock,还是 CPU activity 阻止设备休眠?当设备不被使用时,它们不应该停止。

Should I be using a WakeLock for these services

如果您不想让设备进入睡眠状态,并且没有其他任何东西可以让设备保持清醒状态,可以。

does the CPU activity keep the device from sleeping?

没有

the services continue running with the screen off and no WakeLock

然后:

  • 您的设备已接通电源(并且您有相关的开发人员设置以在接通电源时保持 CPU 开启),或

  • 其他东西拿着 WakeLock,或

  • 您的硬件专门用于不让设备进入睡眠模式,或者

  • 您误解了测试结果