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系統是否會自動偵聽位置更改以更新最後一次已知的緩存值? –

相關問題