getLastLocation API如何在内部工作?即使位置设置为ON,它也会返回null

时间:2017-04-18 05:08:48

标签: android location locationmanager fusedlocationproviderapi google-location-services

我已经阅读了一些有关此问题的问题,但我没有找到我需要的答案。我想了解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

需要注意的要点:

  1. 授予位置许可。

  2. 位置设置已开启

  3. 相同的代码适用于少数设备,但在少数设备上失败。

  4. 我正在尝试从Google的FusedLocationProviderAPI和Android Framework LocationManager API获取位置。

  5. 我已经检查了Stackoverflow上的所有现有问题

  6. 如果有人能解释在什么情况下,即使位置设置为ON,getLastLocation API也可以返回null,这将是很好的。有谁知道这是如何在内部工作的?

1 个答案:

答案 0 :(得分:0)

getLastLocation :此方法会为您提供设备上可用的最后位置。

在某些情况下,如果您的设备没有任何最后位置,那么它将返回null。

您应该使用 onLocationChanged 方法获取当前位置。

请在此处查看示例,您将获得它 https://developer.android.com/training/location/receive-location-updates.html

根据文件

public abstract Location getLastLocation(GoogleApiClient client)

返回当前可用的最新位置。

  

如果某个位置不可用,这应该很少发生,则为null   将被退回。在尊重的同时提供最佳准确度   将返回位置权限。

     

此方法提供了获取位置的简化方法。它是   特别适用于不需要的应用   准确的位置,不想保持额外的逻辑   位置更新。

希望这些可以帮助你。