2011-03-11 62 views
1

我有一个严重的问题。在Android中调用requestLocationUpdates函数时,GPS将侦听当前位置。但是如果手机在室内(比如地下),那么GPS将继续收听,直到一个位置被固定。Android请求位置更新保留在

这在测试时会杀死我的电池...有没有什么办法可以在2分钟的时间内设置removeUpdates位置?

感谢

+0

如果您使用的是嵌入式的MapView与MyLocationOverlay,在这里看到:http://stackoverflow.com/a/10977854/1071942 –

回答

1

我的建议:

  1. 创建一个使用一个处理器
  2. 使用sendMessageDelayed触发处理程序类每5秒
  3. 为message.obj保持每次几秒钟的计数器和处理程序是所谓的增量由5
  4. 的message.obj当message.obj达到120,那么你知道2分钟的路程了,你可以使用中的removeUpdate()

  5. onLocationChanged时()被调用,然后使用removeMessages()的处理程序,并重新启动sendMessageDelayed()与该对象含有0

LOVE处理程序!!

3

添加你自己的逻辑来调用removeUpdates()后两分钟内没有收到更新。没有内置的超时机制,但创建你自己的应该不是特别困难。

+0

唯一超时机制我能想到的是在后台运行的机器人服务2分钟后处理它..但我认为这是非常低效的。感谢您的回应,我买了你的书,但我没有看到任何关于高效超时机制的地方.. 你能建议吗?谢谢 – Yudhistre

+0

查看上面..谢谢 – Yudhistre

+0

@yuhistre:不知道什么组件调用'requestLocationUpdates()'和什么组件托管'LocationListener',这是不可能给你的建议。 – CommonsWare