2011-02-24 84 views
2

建議將LocationManager.NETWORK_PROVIDER和LocationManager.GPS_PROVIDER與不同的偵聽器一起實現,然後取消註冊偵聽器locationManager.removeUpdates(locationListener)?LocationManager最佳實施?

由於GPS_PROVIDER需要大量時間來返回值,有時甚至不會回撥電話?

此外,我們可以有一個locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);在處理程序中使用postDelayed以避免在沒有任何回調的情況下發生死鎖?

任何人的幫助?

在此先感謝!

BR, Ĵ

回答

1

嗯據我所知locationManager.getLastKnownLocation返回瞬間,所以你不應該看任何死鎖?

如果您確實需要管理自己的LocationListeners,建議先註冊一個Network-One和兩個GPS-1。使用網絡監聽器接收第一個位置(粗略)。配置一個GPS位置監聽器以接收所有GPS更新。一旦位置準確無誤,切換到一個可管理的全球定位系統位置監聽器,它只接收每x秒更新和x米差異的更新。有關更多示例,請參閱http://developer.android.com/guide/topics/location/obtaining-user-location.html

如果要顯示地圖上的位置,請嘗試MyLocationOverlay。它爲你做了這一切。

+0

由死鎖我的意思是如果您已請求NETWORK或GPS偵聽器不給回電話我應該getLastKnown位置作爲備份。有時候它也返回了null。所以不是一個真正的選擇。其次,沒有我需要目前的位置爲不同的目的沒有地圖或類似的。第三,GPS_PROVIDER不接收回調,這很奇怪,所以必須依賴NETWORK。謝謝。 –

+0

從我心中的變化。這是正確的 !!!會是一個更好的實現。然而,如果你在15秒的時間內沒有得到任何迴應,你需要一個延期的處理程序。你可以關閉它。 –