我正在尋找關於執行以下任務的最佳途徑一些建議(我現在的方法是很幼稚的,並導致我的問題)如何要等到線程結束
這裏是辦下來了什麼應該在我的應用程序啓動時發生:
首先提示用戶登錄Facebook。我使用Facebook的 DialogListener來監聽它何時完成。
完成上述任務後,我使用AsyncFacebookRunner收集有關用戶的一些 信息。我使用 AsyncFacebookRunner.RequestListener()來偵聽此時 何時完成。
在任務2的完成我存儲在SharedPreferences
一些信息,這一切工作出色。這是問題...我需要使用http POST中的某些信息來獲取服務器上的數據。數據用於填充gridview。爲此我正在使用Asynctask。我的問題在於不知道SharedPreferences中的數據何時存在。
截至目前在doInBackground我有這樣一個循環:
while (true)
{
if (not a valid value of something in SharedPreferences)
Thread.sleep(500);
else
break
}
這是令人難以置信的醜陋的,天真的,並給了我一些問題。在這一點上,我覺得我應該重寫整個事情,所以希望有人可以建議一個更好的方法!
asynctask的onPostExecute()方法不合適嗎?這總是在doInBackground之後執行的,所以如果你在doInBackground中獲得你的首選項,那麼它將在onPostExecute()中可用。 – DeeV