我有一个使用GPS进行定期更新的应用。过去,当设备进入休眠状态(屏幕关闭,屏幕超时等)时,位置更新仍然存在。这是在HTC Desire上运行2.2。
出于各种原因,我需要这种行为。
然而,现在正在运行4.0.4的HTC Desire S上进行测试,似乎发生的事情是在进入睡眠模式后更新继续(1 /秒)约5秒,但随后停止。但是,运行4.4.2的Google Nexus 7上运行的代码完全相同,并且更新仍在继续。
活动生命周期似乎正在做所有正确的事情(onStause进入睡眠时,onResume退出睡眠时),但在Desire S上,位置更新停止。
毫无疑问,关闭它们会更节能,我需要它们。该行为似乎取决于操作系统和/或设备。我怎样才能做到这一点?
编辑:实际上我发现位置更新确实会继续发生,比请求的频率低得多。
答案 0 :(得分:0)
首先,OS只能以100%的概率调用onPause(),onStop()和onDestroy()可能不被OS调用。您应该在onPause()中取消注册,此外设计是错误的,因为要做到这一点,您有两个选择:
1)使用广播接收者/意图服务的待定意图来管理位置;
2)使用前台服务安装位置监听器。
活动不是做这件事的好地方。
答案 1 :(得分:0)
实际上,最简单的方法似乎是部分唤醒锁定。