我有了類似這樣的代碼中的onCreate()一MapActivity:試圖顯示ProgressDialog中的AsyncTask在MapActivity執行
if(...) {
...
new FirstAsyncTask(id, this).execute((Object[]) null);
...
} else {
...
myLocationOverlay.runOnFirstFix(new Runnable() {
new SecondAsyncTask(lat, lon, ActivityName.this).execute((Object[]) null);
}
...
}
的FirstAsyncTask和SecondAsyncTask都做不同的事情,但他們兩人秀一個ProgressDialog像這樣:
public FirstAsyncTask(long id, Context context) {
progressDialog = new ProgressDialog(context);
}
protected void onPreExecute() {
...
progressDialog.show();
}
protected String doInBackground(Object... params) {
...
progressDialog.dismiss();
...
}
這正與FirstAsyncTask,但無論怎樣我在電話更改爲SecondAsyncTask它總是失敗,此錯誤:無法內螺紋已不叫Looper.prepare創建處理程序()。我曾嘗試將上下文參數設置爲「this」,「ActivityName.this」,getApplicationContext()和getBaseContext()。
我對Android仍然很陌生,所以這種「上下文」的想法讓我感到困惑。我更加困惑FirstAsyncTask工作,但SecondAsyncTask不工作。我發現在其他問題中提到了這個錯誤,但沒有一個答案似乎有效。有任何想法嗎?
編輯:在SecondSyncTask的構造函數中初始化ProgressDialog時引發異常。
謝謝,但這並不能解釋爲什麼其中一個工作正常,另一個不是。 – jebar8 2012-08-07 03:40:41
這是因爲您正在向UI線程的不同線程構建progressdialog。你正在構建一個新線程產生的secondasynctask的構造函數。 – 2012-08-07 03:44:14
這些AsyncTasks在應用中的多個活動中重複使用。他們沒有在這個活動中宣佈。 ProgressDialog在這個例子中只有一個問題。移動AsyncTask之外的對話是唯一的解決方法嗎? – jebar8 2012-08-07 03:47:31