Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android谷歌地图:getLastLocation vs RequestLocationUpdate_Android_Google Maps_Gps_Location_Google Play Services - Fatal编程技术网

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()。类似地,当发生位置更改时,最后一个位置也将得到更新。