service.startForeground 是否意味着唤醒锁?

Does service.startForeground imply wakelock?

问题

我想知道我们是否需要获取 WakeLock,或者 service.startForeground() 命令是否为我们完成了?我在文档中没有找到任何内容。

目标

我们希望删除可能会减慢服务启动速度的不必要内容,因为我们希望尽快开始捕获传感器数据并且服务可能会频繁重启。

上下文

我们正在开发一个 Android 库来捕获大约 200 Hz 的传感器数据长达几个小时(研究环境)。现在我们获取一个 WakeLock 并启动捕获服务作为 ForegroundService 以确保我们的捕获在不使用设备时不会停止。

回答我自己的问题(如果没有其他人找到更多详细信息):

在我的理解中,“foreground”只是描述用户会注意到应用程序是否被终止,例如浏览大页面时。为此要求系统尽量避免杀死该服务。

  • 仅仅因为前台服务是 运行 可能并不意味着 CPU 无法进入深度睡眠模式。

为了从用户定义的开始到停止一直收集传感器数据,我们仍然需要自己获取WakeLock

不,唤醒锁可用于确保您的前台服务运行当设备进入睡眠状态时

If you must use partial wake locks, follow these recommendations:

  • Make sure some portion of your app remains in the foreground. For example, if you need to run a service, start a foreground service instead. This visually indicates to the user that your app is still running.

https://developer.android.com/topic/performance/vitals/wakelock#best_practices