1

我已经阅读了一些关于此的问题,但我并没有找到我需要的答案。我想了解 getLastLocation 如何在内部工作。最后一个已知位置缓存值如何更新?

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

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

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

getLastLocation API 获取最后一个已知位置

需要注意的点:

  1. 授予位置权限。

  2. 位置设置已开启

  3. 相同的代码在少数设备上工作,但在少数设备上失败。

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

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

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

4

1 回答 1

0

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

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

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

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

根据文档

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

返回当前可用的最近的最佳位置。

如果某个位置不可用(这种情况应该很少发生),则将返回 null。将返回尊重位置权限的最佳精度。

此方法提供了一种获取位置的简化方法。它特别适合不需要准确位置并且不想为位置更新维护额外逻辑的应用程序。

希望这些对你有所帮助。

于 2017-04-18T06:01:27.533 回答