【问题标题】:android Google maps : getLastLocation vs requestLocationUpdatesandroid谷歌地图:getLastLocation vs requestLocationUpdates
【发布时间】:2015-01-22 06:26:43
【问题描述】:

我只需要清楚地理解这一点,getLastLocation() 方法会给我最后一个已知位置,requestLocationUpdates 会在每个时间段给我当前位置。

现在,我正在开发一个简单的应用程序来跟踪手机,它将在汽车中。

我的问题是:

1- getLastLocation() 究竟是如何工作的,这个last known location 是否会在位置更改时更新

2- 哪个更好,使用getLastLocation() 获取初始位置,然后使用onLocationChanged 方法更新当前位置或使用requestLocationUpdates 每n 秒更新一次位置?

【问题讨论】:

  • 你几乎自己回答:getLastLocation() method will give me the last known location and requestLocationUpdates will give me the current location every period of time.
  • 位置改变时,最后一个已知位置会更新吗?
  • 它返回一个不会进一步更新的 Location 对象。通常,定期更新的内容是通过侦听器方法完成的,例如:LocationListener

标签: android google-maps gps location google-play-services


【解决方案1】:

getLastLocation 为您提供LocationClient 中的最后一个位置,有时它可能为空,例如,如果您没有安装任何其他使用位置服务的应用程序,这种情况很少见,因为大多数手机都有 Google已安装地图或其他一些与位置相关的应用程序。

getLastLocation 仅在您只需要一次位置并完成后才有用,但对于位置更新,您应该使用requestLocationUpdates,并且使用服务,当位置更改时,您的应用程序将始终收到通知。

我希望您使用 Play 服务中的 FusedLocation Provider,这样您就可以指定您需要多快的位置更新,以检查电池消耗和性能的情况。

还要注意,当您使用requestLocationUpdates 时,只有您会获得任何位置更改更新。

【讨论】:

  • 感谢您的回答,我只有 2 分。 1) Also to note here when you use requestLocationUpdates then only you will get any location change updates. 因此,如果我每 1 秒更新一次,但手机没有移动,它不会更新,我是否正确 2) onLocationChanged 无论我使用 requestLocationUpdates 还是 getLastLocation,它都能正常工作吗?它会更新getLastLocation 吗?
  • 不!它不会!因为没有位置更改,当您请求它们时,当有任何位置更改时将调用 onLocationChange()。同样,当位置发生变化时,最后一个位置也会更新。
【解决方案2】:

所以根据 android 文档 getLastLocation() :-

返回当前可用的最近的最佳位置。如果一个 位置不可用,这应该很少发生,null 将 被退回。在尊重位置的同时获得最佳精度 权限将被返回。该方法提供了一种简化的方法 获取位置。它特别适用于执行以下操作的应用程序 不需要准确的位置并且不想维护 位置更新的额外逻辑。

这是 getLastLocation() 的问题,它不准确,如果它在缓存中没有任何最后一个已知位置,它可能会返回 null。我在我的应用程序中多次遇到这个问题。所以为了获得准确您应该使用 requestLocationUpdates() 的位置,但根据您的需要定义您希望更新的时间间隔,因为很短的时间跨度可能会导致更多的电力使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    相关资源
    最近更新 更多