2016-01-17 104 views
0

我有一個問題和概念,我不明白。 我的應用程序從當前位置的Internet基礎上獲取信息。 信息在AsyncTask中獲得。AsyncTask等待位置

我的問題是,我不想繼續獲取GPS座標之前的信息。

我有GPS服務,它工作正常,並返回座標。不過,我希望我的AsyncTask從Internet獲取信息,等待GPS座標可用。

這也有點工作得很好 - 在我的AsyncTask的GPS我開始serviceIntent得到我的座標。然而onPostExecute不會等到我有座標並繼續前進。

如何讓AsyncTask等到座標可用?

回答

0

你不需要你的AsyncTask等到座標可用。

在您的AsyncTask中,您查詢GPS座標,當您獲取GPS座標響應時,您可以啓動另一個具有已知GPS座標的AsyncTask向您的服務器發送請求並等待響應。

也許您不需要第一個AsyncTask,只需調用位置服務即可獲取當前位置並在位置服務中啓動AsyncTask onLocationChanged()回調。當定位失敗時,例如位置被禁用,您還需要執行錯誤處理。

如果你真的想onPostExecute()被調用後onLocationChanged(),您可以在您的AsyncTask的onExecute()等待的鎖定對象,在位置服務回調,發送等待對象上的通知。

+0

不幸的是,我不能從onLocationChange()調用AsyncTask。我如何讓AsyncTask「坐聽」座標? OnPostExecute()在進程中間被調用 - 它不會等待座標。 –