我有一个 MapActivity,在 onCreate() 中有与此类似的代码:
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 无效感到更加困惑。我已经看到在其他问题中提到了很多这个错误,但似乎没有一个答案有效。有任何想法吗?
编辑:在 SecondAsyncTask 的构造函数中初始化 ProgressDialog 时引发异常。