我在這個應用程序中有一個Asynctask,我在onPreExecute中有一個ProgressDialog。ProgressDialog不消除Asynctask的多個實例
ProgressDialog pDialog;
protected void onPreExecute() {
pDialog = new ProgressDialog(Synchronization.this);
pDialog.setMessage(Html.fromHtml("<b>Please Wait</b><br/>Working..."));
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
而且,在onPostExecute中,我關閉了這個對話框。
protected void onPostExecute(ArrayList<Object> allShopsData) {
// TODO Auto-generated method stub
super.onPostExecute(allShopsData);
final ArrayList<Object> allShops = allShopsData;
// dismiss the dialog after getting all products
if(pDialog!=null && pDialog.isShowing())
pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
ExpandableListView expandableList = (ExpandableListView) findViewById(R.id.expandlist);
expandableList.setDividerHeight(2);
expandableList.setGroupIndicator(null);
expandableList.setClickable(true);
MyExpandableAdapter adapter = new MyExpandableAdapter(taskList,
allShops);
adapter.setInflater(
(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE),
Synchronization.ref);
expandableList.setAdapter(adapter);
}
});
}
我在同步(我的主要活動)onCreate()中啓動名稱爲'task1'的Asynctask。 現在,我在MainActivity中有一個菜單,我取消'task1'引用的Asynctask,並創建另一個Asynctask實例,將其分配給'task1'。
task1.cancel(true);
task1 = new GetShopsTask();
task1.execute(taskList);
但在這裏,我看到創建了一個進度對話框onPostExecute後駁回(我還可以看到我的觀點在後臺更新),而是立即在此之後,另一進度對話框彈出不被擱置。 不確定,造成這一點的是什麼部分。有人可以幫忙嗎?
我不知道這是造成你的問題,但請從'onPostExecute刪除'runOnUiThread'()'。由於'onPostExecute()'運行在'UI線程'上是不必要的,它可能導致問題/混亂 – codeMagic
你在哪裏定義'ProgressDialog'?難道兩個'AsyncTask'會互相干擾,第二個會覆蓋第一個''pDialog''的引用嗎? – SimonSays
codemagic-我剛剛從我的代碼中刪除了runOnUiThread,但仍然是相同的行爲。 – Armageddon