题
我想知道我们是否需要获取WakeLock或者service.startForeground()命令是否为我们执行此操作?我没有在文档中找到任何内容。
目标
我们希望删除可能会减慢服务启动的不必要的东西,因为我们希望尽快开始捕获传感器数据,并且可能会频繁重启服务。
上下文
我们正在开发一个Android库来捕获大约200 Hz的传感器数据长达几个小时(研究环境)。现在我们获取一个WakeLock并将捕获服务作为ForegroundService启动,以确保在不使用设备时不会停止捕获。
回答我自己的问题(如果没有其他人发现更多细节):
在我的理解中,“前景”只描述用户会注意到应用程序是否被杀死,例如浏览大页面时因此,要求系统尽量避免终止服务。
为了从用户定义的开始到停止始终收集传感器数据,我们仍然需要自己获取WakeLock。
不,可以使用唤醒锁来确保您的前台服务在设备进入睡眠状态时运行
如果必须使用部分唤醒锁,请遵循以下建议:
- 确保您应用的某些部分仍然在前台。例如,如果您需要运行服务,请改为启动前台服务。这可以直观地向用户显示您的应用仍在运行。
https://developer.android.com/topic/performance/vitals/wakelock#best_practices