android谷歌地图:getLastLocation vs RequestLocationUpdate
我只需要清楚地理解这一点,android谷歌地图:getLastLocation vs RequestLocationUpdate,android,google-maps,gps,location,google-play-services,Android,Google Maps,Gps,Location,Google Play Services,我只需要清楚地理解这一点,getLastLocation()方法将为我提供最后一个已知位置,requestLocationUpdates将为我提供每个时段的当前位置 现在,我正在开发一个简单的应用程序来跟踪手机,这将是在汽车上 我的问题是: 1-getLastLocation()的具体工作原理是什么,当位置发生变化时,此最后一个已知位置是否会更新 2-使用getLastLocation()获取初始位置,然后使用onLocationChanged方法更新当前位置,或者使用RequestLocati
getLastLocation()
方法将为我提供最后一个已知位置,requestLocationUpdates
将为我提供每个时段的当前位置
现在,我正在开发一个简单的应用程序来跟踪手机,这将是在汽车上
我的问题是:
1-getLastLocation()
的具体工作原理是什么,当位置发生变化时,此最后一个已知位置是否会更新
2-使用getLastLocation()
获取初始位置,然后使用onLocationChanged
方法更新当前位置,或者使用RequestLocationUpdate
每隔n秒更新一个最新位置,哪个更好?因此根据android文档getLastLocation():-
返回当前可用的最佳最近位置。如果
位置不可用,这应该很少发生,null将
被退回。在尊重位置的同时,提供最佳精度
将返回权限。此方法提供了一种简化的方法
获取位置。它特别适合于这样做的应用程序
不需要准确的位置,也不希望维护
位置更新的额外逻辑
这就是getLastLocation()的问题,即它不准确,如果缓存中没有任何最后已知的位置,它可能会返回null。我在应用程序中多次遇到此问题。因此,要获得准确的位置,应该使用requestLocationUpdates()但是根据您的需要定义时间间隔,您希望在哪个时间间隔进行更新,因为很短的时间跨度可能会导致更多的用电。getLastLocation
提供了LocationClient
中的最后一个位置,它有时可能为空,比如说,如果你没有安装任何其他使用位置服务的应用程序,这是一种罕见的情况,因为大多数手机都安装了谷歌地图或其他依赖位置的应用程序
getLastLocation仅在您只需要一次定位并完成定位时有用,但对于位置更新,您应该使用requestLocationUpdates
,并且使用服务,当位置更改时,您的应用程序将始终收到通知
我希望您使用的是play services的FusedLocation提供程序,以便您可以指定所需的位置更新速度,以检查电池耗电情况和性能
这里还需要注意的是,当您使用requestLocationUpdates
时,只有您才能获得任何位置更改更新。您几乎可以自己回答:getLastLocation()方法将为我提供最后一个已知位置,RequestLocationUpdate将为我提供每个时间段的当前位置。
当位置更改时,是否会更新此最后一个已知位置?它返回一个不会进一步更新的位置对象。通常,定期更新的内容是通过侦听器方法完成的,例如:LocationListener
。谢谢你的回答,我还有两点要说。1) 这里还要注意,当您使用RequestLocationUpdate时,只有您才能获得任何位置更改更新。
因此,如果我每1秒更新一次,但手机没有移动,它不会更新,我是否正确2)onLocationChanged
无论我使用的是requestLocationUpdates
还是getLastLocation
,它都会起作用吗?它会更新getLastLocation
?不会!不会的!因为没有位置更改,所以当您请求任何位置更改时,将调用onLocationChange()。类似地,当发生位置更改时,最后一个位置也将得到更新。