我的应用程序定期使用闹钟检查位置,使用一个 BroastcastReceiver
启动服务。 我知道在启动服务之前应该获取唤醒锁,但是我的问题是什么时候可以释放它?
如果在调用 requestLocationUpdates
之后释放唤醒锁,设备可以进入睡眠状态并且不调用我的 LocationListener
吗?还是设备总是会唤醒以传送更新,并保持唤醒状态直到回调返回?我不愿意保持唤醒锁,因为这会阻止设备在更新之间休眠,直到我完成位置操作。
我的应用程序定期使用闹钟检查位置,使用一个 BroastcastReceiver
启动服务。 我知道在启动服务之前应该获取唤醒锁,但是我的问题是什么时候可以释放它?
如果在调用 requestLocationUpdates
之后释放唤醒锁,设备可以进入睡眠状态并且不调用我的 LocationListener
吗?还是设备总是会唤醒以传送更新,并保持唤醒状态直到回调返回?我不愿意保持唤醒锁,因为这会阻止设备在更新之间休眠,直到我完成位置操作。
requestLocationUpdates
后释放唤醒锁似乎不是问题。不幸的是,获得明确答案的唯一方法是询问平台开发人员,但我没有收到回复。WakeLock
,允许您接收Intent
。在接收器中,如果您想处理该事件,您需要获取(并稍后释放)自己的WakeLock。 - Richard Le MesurierFLAG_ONE_SHOT
在挂起意图中模拟requestSingleUpdate
并使用闹钟管理器请求更新-尚未尝试完全依赖于minTime
)。 - Mr_and_Mrs_DonReceive()
运行时唤醒锁是有效的。 - Mr_and_Mrs_D在 Android 系统设置中检查省电模式:必须将其关闭以允许位置管理器在屏幕关闭时生成更新的位置;经过在三星 A5 上的测试,我花了两天时间才找到这个解决方案 :-)
WakefulService
][1],根据文档所述,它可以为你处理部分唤醒锁的问题。 [1]:http://github.com/commonsguy/cwac-wakeful#readme - Christopher OrrService
启动并调用requestLocationUpdates
之前持有一个wakelock。此时,服务正在运行并可以接收位置更新;wakelock可以被释放,onReceive
方法将已完成,设备可能会回到睡眠状态。 - Christopher Orr