android谷歌地图:getLastLocation与requestLocationUpdates

时间:2015-01-22 06:26:44

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

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

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

我的问题是:

1-确切getLastLocation()的工作原理,当位置发生变化时,last known location会更新吗

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

2 个答案:

答案 0 :(得分:2)

所以根据android docs getLastLocation(): -

  

返回当前可用的最新位置。如果一个   位置不可用,这应该很少发生,null会   被退回尊重位置时可获得的最佳准确度   权限将被退回。该方法提供了一种简化的方法   得到位置。它特别适合那些应用程序   不需要准确的位置,也不想维护   位置更新的额外逻辑。

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

答案 1 :(得分:1)

getLastLocation为您提供LocationClient中的最后一个位置,有时可能为空,例如,如果您没有安装任何其他使用位置服务的应用程序,那么&#39} ;这是一种罕见的情况,因为大多数手机都安装了Google地图或其他一些依赖于位置的应用程序。

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

我希望您在播放服务中使用FusedLocation Provider,这样您就可以指定所需的位置更新速度,以检查电池消耗情况和性能。

此处请注意,当您使用requestLocationUpdates时,只会获得任何位置更改更新。