Android RequestLocationUpdate保持打开状态

Android RequestLocationUpdate保持打开状态,android,gps,Android,Gps,我有一个严重的问题。在Android中调用requestLocationUpdates函数时,GPS会监听当前位置。但是如果手机在室内(比如说地下),那么GPS将继续监听,直到确定位置为止 这会在测试时耗尽我的电池。。。是否有任何方法可以在收听职位2分钟后设置为removeUpdates 谢谢添加您自己的逻辑,以便在两分钟未获得更新后调用removeUpdates()。没有内置的超时机制,但是创建自己的超时机制应该不会特别困难。添加自己的逻辑,在两分钟没有得到更新后调用removeUpdates

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

这会在测试时耗尽我的电池。。。是否有任何方法可以在收听职位2分钟后设置为removeUpdates


谢谢

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

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

我的建议:

  • 创建一个使用处理程序的类
  • 使用sendMessageDelayed每5秒触发一次处理程序
  • 对于message.obj,保留秒计数器,每次调用处理程序时,将message.obj递增5
  • 当message.obj达到120时,您就知道2分钟结束了,您可以使用removeUpdate()

  • 调用onLocationChanged()时,请在处理程序上使用removeMessages(),并使用包含0的对象重新启动sendMessageDelayed()

  • 我爱你

    我的建议:

  • 创建一个使用处理程序的类
  • 使用sendMessageDelayed每5秒触发一次处理程序
  • 对于message.obj,保留秒计数器,每次调用处理程序时,将message.obj递增5
  • 当message.obj达到120时,您就知道2分钟结束了,您可以使用removeUpdate()

  • 调用onLocationChanged()时,请在处理程序上使用removeMessages(),并使用包含0的对象重新启动sendMessageDelayed()


  • 我爱你

    我能想到的唯一超时机制是在后台运行一个android服务,在2分钟后处理它。。但我认为这是非常低效的。谢谢你的回复,我买了你的书,但是我没有看到任何关于有效超时机制的东西。。你能推荐一个吗??Thanks@yuhistre:如果不知道哪个组件正在调用
    requestLocationUpdates()
    以及哪个组件正在托管
    LocationListener
    ,就不可能给您提供建议。我能想到的唯一超时机制是让安卓服务在后台运行2分钟后处理它。。但我认为这是非常低效的。谢谢你的回复,我买了你的书,但是我没有看到任何关于有效超时机制的东西。。你能推荐一个吗??Thanks@yuhistre:如果不知道哪个组件正在调用
    requestLocationUpdates()
    以及哪个组件正在承载
    LocationListener
    ,则无法向您提供建议。如果您使用带有MyLocationOverlay的嵌入式MapView,请参见此处:如果您使用带有MyLocationOverlay的嵌入式MapView,请参见此处: