2012-06-13 52 views
0

我有一個登錄頁面(Android中的一個活動),在此期間我運行異步任務以獲取位置修復。登錄成功後不久,我將該應用程序重定向到另一個活動。我切換到下一個活動後,位置修復程序不可用。這是怎麼一回事呢: -如何異步獲取位置修復程序

代碼: -

oncreate { 
    ... 
    AsyncTaskClass task; 
    task.execute(); 
} 

class AsyncTaskClass extends Async... { 

    doInBackground() { 
    locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locLstnr); 
    } 

    onPostExecute { 
    //disable listener 
    startActivity(nextPage); 
    } 
} 

我可以看到定位被由應用要求(GPS圖標在任務欄上顯示出來),不過片刻內,該postExecute ()被執行,nextPage加載和定位不被獲取。我如何確保獲得位置修復?換句話說,即使我改變了活動,如何確保在後臺接收位置?

回答

1

您可以使用getLastKnownLocation(LocationManager.GPS_PROVIDER)getLastKnownLocation(LocationManager.NETWORK_PROVIDER)獲取上次瞭解的位置。如果你想註冊位置更新,這將更加棘手。我會打電話

requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener) 

從您的應用程序的持久性類。在我的課堂上,我有一個叫做位置經理的課當位置管理器獲取位置更新時,通過使用接口實現的回調方法將位置發送到活動。看看這個問題... What is the simplest and most robust way to get the user's current location on Android?

+0

嗨。謝謝回覆。不幸的是我已經有了getLastKnownLocation方法。 嗯,我只想定位一次,所以我沒有在持久化類中使用這個偵聽器。我認爲一個異步類監聽器就足夠了。 – gkris

+0

問題是,當您通過onLocationChanged(位置位置)方法獲取位置時,如何與具有新位置的活動進行通信。由於您不確定將顯示哪些活動,因此需要一些持久性類。您可能能夠註銷on活動中的位置更新,然後註冊下一個活動。我不確定它是否會重新開始整個過程​​。 –

+0

我使用變量傳遞值。我會嘗試使用持久化類來實現,謝謝你的建議。 – gkris