某些设备上的GPS位置更新会导致“睡眠”问题

时间:2014-06-08 12:57:15

标签: android gps sleep locationmanager

我有一个使用GPS进行定期更新的应用。过去,当设备进入休眠状态(屏幕关闭,屏幕超时等)时,位置更新仍然存在。这是在HTC Desire上运行2.2。

出于各种原因,我需要这种行为。

然而,现在正在运行4.0.4的HTC Desire S上进行测试,似乎发生的事情是在进入睡眠模式后更新继续(1 /秒)约5秒,但随后停止。但是,运行4.4.2的Google Nexus 7上运行的代码完全相同,并且更新仍在继续。

活动生命周期似乎正在做所有正确的事情(onStause进入睡眠时,onResume退出睡眠时),但在Desire S上,位置更新停止。

毫无疑问,关闭它们会更节能,我需要它们。该行为似乎取决于操作系统和/或设备。我怎样才能做到这一点?

编辑:实际上我发现位置更新确实会继续发生,比请求的频率低得多。

2 个答案:

答案 0 :(得分:0)

首先,OS只能以100%的概率调用onPause(),onStop()和onDestroy()可能不被OS调用。您应该在onPause()中取消注册,此外设计是错误的,因为要做到这一点,您有两个选择:

1)使用广播接收者/意图服务的待定意图来管理位置;

2)使用前台服务安装位置监听器。

活动不是做这件事的好地方。

答案 1 :(得分:0)

实际上,最简单的方法似乎是部分唤醒锁定。