我已经阅读了一些有关此问题的问题,但我没有找到我需要的答案。我想了解getLastLocation如何在内部工作。如何更新上次已知的位置缓存值?
我们需要获取设备的最后已知位置。任何人都可以解释getLastLocation如何工作?我已经看到,即使位置设置为ON,getLastLocation API也会返回null。同时,如果我检查了谷歌地图应用程序并且它能够获取该位置(当然它必须使用requestLocationUpdates或任何其他API)。
在我的Nexus-5上,我发现即使在我启动Google Map应用程序然后再次启动我的应用程序之后,getLastLocation也会返回null。即使在Google地图应用中正确检测到位置,getLastLocation API也会返回null。
Android系统如何更新上一个已知位置?是否仅在某些应用程序通过requestLocationUpdates API请求位置时更新? 如果Android系统自动更新上一个已知位置,那么为什么getLastLocation API会返回null?
getLastLocation API Getting last known location
需要注意的要点:
授予位置许可。
位置设置已开启
相同的代码适用于少数设备,但在少数设备上失败。
我正在尝试从Google的FusedLocationProviderAPI和Android Framework LocationManager API获取位置。
我已经检查了Stackoverflow上的所有现有问题
如果有人能解释在什么情况下,即使位置设置为ON,getLastLocation API也可以返回null,这将是很好的。有谁知道这是如何在内部工作的?
答案 0 :(得分:0)
getLastLocation :此方法会为您提供设备上可用的最后位置。
在某些情况下,如果您的设备没有任何最后位置,那么它将返回null。
您应该使用 onLocationChanged 方法获取当前位置。
请在此处查看示例,您将获得它 https://developer.android.com/training/location/receive-location-updates.html
根据文件
public abstract Location getLastLocation(GoogleApiClient client)
返回当前可用的最新位置。
如果某个位置不可用,这应该很少发生,则为null 将被退回。在尊重的同时提供最佳准确度 将返回位置权限。
此方法提供了获取位置的简化方法。它是 特别适用于不需要的应用 准确的位置,不想保持额外的逻辑 位置更新。
希望这些可以帮助你。