【问题标题】:Android requestLocationUpdates stays onAndroid requestLocationUpdates 保持打开状态
【发布时间】:2012-06-11 18:00:54
【问题描述】:

我有一个严重的问题。在 Android 中调用 requestLocationUpdates 函数时,GPS 会监听当前位置。但如果手机在室内(比如地下),那么 GPS 将继续侦听,直到确定位置为止。

这会在测试时耗尽我的电池...有什么方法可以在侦听位置 2 分钟后设置为 removeUpdates ???

谢谢

【问题讨论】:

标签: android gps


【解决方案1】:

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

【讨论】:

  • 我能想到的唯一超时机制是让一个android服务在后台运行2分钟后处理它。但我认为这是非常低效的。感谢您的回复,我买了你的书,但我没有看到任何关于有效超时机制的地方。你能推荐一个吗?谢谢
  • @yuhistre:在不知道哪个组件调用requestLocationUpdates()以及哪个组件托管LocationListener的情况下,不可能给你建议。
【解决方案2】:

我的建议:

  1. 创建一个使用 Handler 的类
  2. 使用 sendMessageDelayed 每 5 秒触发一次处理程序
  3. 为 message.obj 保留一个秒计数器,每次调用处理程序时将 message.obj 增加 5。
  4. 当 message.obj 达到 120 时,您知道 2 分钟已到,您可以使用 removeUpdate()

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

喜欢处理程序!!

【讨论】:

    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2013-01-27
    • 2017-06-02
    相关资源
    最近更新 更多