0

我已阅读了一些关于此问题的问题,但我没有完全找到需要的答案。我想了解getLastLocation如何在内部工作。上次已知的位置缓存值如何更新?getLastLocation API如何在内部工作?即使位置设置为ON,它也会返回空值

我们已经要求我们需要获取设备的最后已知位置。任何人都可以解释getLastLocation如何工作?我已经看到,即使位置设置为ON,getLastLocation API也会返回null。同时,如果我检查了Google Map应用程序并且它能够获取位置(当然,它必须使用requestLocationUpdates或任何其他API)。

在我的Nexus-5上,我观察到getLastLocation在我启动Google Map应用程序后返回null,然后再次启动我的应用程序。即使在Google地图应用中正确检测到位置,getLastLocation API也会返回null。

Android系统如何更新上一个已知位置?它是否仅在某些应用程序通过requestLocationUpdates API请求位置时进行更新? 如果Android系统自动更新最后一个已知位置,那么为什么getLastLocation API返回null?要注意的

getLastLocation API Getting last known location

点:

  1. 位置授予许可。

  2. 位置设置为ON

  3. 相同的代码工作的一些设备,但未能对少数设备。

  4. 我想从Google的FusedLocationProviderAPI和Android Framework LocationManager API获取位置。

  5. 我已经检查#2

所有存在的问题这将是巨大的,如果任何人都可以在什么情况下getLastLocation API可以返回null即使位置设置为ON解释。有谁知道这是如何在内部工作?

+0

你能分享一些代码吗? – CodeCameo

+0

检查这个答案http://stackoverflow.com/questions/20438627/getlastknownlocation-returns-null –

+0

这个问题是重复请检查http://stackoverflow.com/questions/16830047/locationclient-getlastlocation-return-null –

回答

0

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

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

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

请看这里例如,你会得到它 https://developer.android.com/training/location/receive-location-updates.html

根据DOC

公共抽象位置getLastLocation(GoogleApiClient客户端)

返回最佳最近的位置目前已经上市。

如果某个位置不可用,而这种情况很少发生,则会返回空 。在尊重 位置权限的情况下,将返回最佳的准确性。

该方法提供了获取位置的简化方法。它是 特别适用于不需要精确位置且不想为位置更新维护额外逻辑的应用程序。

希望这些帮助你。

+0

是的,我同意我可以收听位置更新。这是可用的解决方案,但我很好奇为什么getLastLocation返回null,即使位置设置为ON。你知道它是如何在内部工作吗? –

+0

正如我上面解释的,如果你的设备没有任何最后的位置,那么它将返回null。当您的设备先前碰到位置时,最后的位置才会获得。 –

+0

对,所以我的位置设置为ON,网络可用。所有条件都满足。我正在移动。仍然getLastLocation返回null。我无法理解它是如何在内部实施的。 Android系统是否会自动侦听位置更改以更新最后一次已知的缓存值? –

相关问题