使用我的Android應用程序,當用戶執行某個動作時,會啓動一個後臺服務,獲取當前的GPS位置並將其保存在數據庫中,並執行其他操作。在該服務中,我使用LocationManager
類中的requestLocationUpdates()
,並等待我的LocationListener
(由服務實現)的onLocationChanged()
被觸發。但等待onLocationChanged
開火的最佳方法是什麼?我應該只是輪詢一個變量,並等待它被設置?有小費嗎?什麼是等待GPS定位的最佳方式?
注意:由於其他原因,我不能簡單地將數據寫入onLocationChanged()
。
編輯:爲了清楚我的情況,我可以舉一個類似於我的情況的例子: 假設用戶按下一個按鈕,並且方法myMethod
被觸發,它將返回一些對象。然後,在此myMethod中,我將註冊GPS的位置更新(使用requestLocationChanged
),並等待用戶位置並將其用於某些事情。換句話說,myMethod
在位置出現之前不能返回。在這種情況下,我不知道如何使用onLocationChanged
。
可能是因爲GPS偵聽器在後臺服務,而不是他的主要過程。 – Segfault 2010-04-06 14:34:58
當用戶執行觸發位置獲取服務的動作時,我的應用程序應該在繼續前獲取當前位置。比方說,用戶按下一個按鈕,一個方法myMethod被觸發,這將返回一些對象。然後,在這個myMethod中,我將註冊GPS的位置更新(使用requestLocationChanged),另外等待用戶的位置並將其用於某些事情。換句話說,myMethod在位置出現之前不能返回。我不知道如何在這種情況下使用onLocationChanged。 – qtips 2010-04-06 16:09:36
所以你想在myMethod中暫停執行,同時等待gps同步並給你一個位置?你不應該那樣做。如果這是你需要做的事情,你應該顯示一個進度對話框,當onLocationChanged被觸發時它將被解散。然後在onLocationChanged中完成myMethod需要處理的位置。 – 2010-04-07 13:45:56