【问题标题】:LocationManager best implementation?LocationManager 最好的实现?
【发布时间】:2011-02-24 09:51:03
【问题描述】:

是否建议使用不同的侦听器同时实现 LocationManager.NETWORK_PROVIDER 和 LocationManager.GPS_PROVIDER 然后注销侦听器 locationManager.removeUpdates(locationListener) ?

因为 GPS_PROVIDER 需要花费大量时间来返回值,有时甚至不回拨?

另外,我们可以有一个 locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);在处理程序中使用 postDelayed 以避免在没有任何回调的情况下出现死锁?

有人帮忙吗?

提前致谢!!!

BR, J

【问题讨论】:

    标签: android implementation locationmanager


    【解决方案1】:

    嗯,afaik locationManager.getLastKnownLocation 会立即返回,所以您应该不会看到任何死锁?

    如果您确实需要管理自己的 LocationListener,建议先注册一个 Network-One 和两个 GPS-one。使用网络监听器接收第一个位置(粗略)。配置一个 GPS-Location-listener 以接收所有 GPS-Updates。一旦位置准确,切换到托管 GPS 位置侦听器,它仅每 x 秒和 x 米 diff 接收更新。有关更多示例,请参阅http://developer.android.com/guide/topics/location/obtaining-user-location.html

    如果您想在地图上显示位置,请尝试 MyLocationOverlay。它会为你做这一切。

    【讨论】:

    • 我所说的死锁是指如果您请求网络或 GPS 侦听器没有回电,我应该有 getLastKnown Location 作为备份。有时它也让我返回 null。所以不是一个真正的选择。其次,没有我需要当前位置用于不同的目的,没有地图等。第三,GPS_PROVIDER 没有收到回调,这有点奇怪,所以必须依赖 NETWORK。谢谢。
    • 改变了我的心意。这是正确的 !!!将是一个更好的实施。但是,您需要一个延迟发布的处理程序,这样如果您在 15 秒的时间内没有得到任何响应。你可以关掉它。
    【解决方案2】:

    理想情况下,这个问题将不再有效,因为 Google 终于发布了更新版本的位置监听器,它可以更有效地处理这个问题。 链接如下: http://developer.android.com/google/play-services/location.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 2010-10-07
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多