我有一个前台服务(START_STICKY,因此没有问题,因为操作系统“杀死”方面)每2秒接收一次位置(GPS)更新以进行导航。我不接受任何唤醒锁。我的问题是:我是否应该使用唤醒锁以避免深度睡眠?或者位置更新是否足以“正在运行”?
答案 0 :(得分:3)
在Android代码中进行了一些挖掘之后,响应是:不,你不需要它。 Android将为您(LocationManagerService)获取一个唤醒锁,直到onLocationChange结束或您的广播接收器收到意图。如果你做了一些异步工作(启动一个意图服务,在onLocationChange中发布一些代码等等),那么你需要创建自己的部分唤醒锁。
答案 1 :(得分:0)
我在app中做同样的事情(但是我使用接收器来接收我推荐的位置更新 - 听众有很多错误报告)。你的方式有两个问题:
正确的方法是使用AlarmManager注册警报 - 警报将唤醒接收器。从onReceive()
开始,您必须开始WakefulIntentService
,它将为您管理锁定。
请参阅:
编辑:2秒真的经常。这会扼杀电池 - 预计收视率会非常低 - 或者会增加间隔时间。