我在用戶登錄時啓動一項服務,該服務具有使用AsyncTask在後臺下載許多附件的功能。爲什麼進度對話框仍然顯示並且當前的異步任務正在等待以前的異步任務?
附件的後臺下載正在進行中並且用戶登錄到應用程序時,我將設備從橫向旋轉到縱向。
在縱向,我有另一種功能來使用AsyncTask計算背景中的某些數據。此功能包含下面的代碼 -
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Calculating...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Integer doInBackground(Integer... args) {
//Some data processing
}
@Override
protected void onPostExecute(Integer file_url) {
super.onPostExecute(file_url);
if(pDialog.isShowing()) {
pDialog.dismiss();
pDialog.cancel();
}
}
問題是 -
當我旋轉設備爲縱向 -
1)進度對話框永遠不會被解僱,直到我重新啓動/重新啓動應用程序。
2)縱向佈局等待附件後臺任務完成,只有它然後計算在自己的佈局在後臺的異步數據。
3)當異步數據的計算完成時,縱向佈局被計算的數據填充,但進度對話框仍然不會被解除,直到應用程序重新啓動。
當活動被破壞,所以'pDialog'引用,它被重新創建我使AsyncTask有一個變量,不存在的引用 – tyczj