1
我在我的活動有這樣的代碼中(LoadTask是一個內部類):ProgressDialog startActivity()
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
ProgressDialog loading = new ProgressDiaolg(this);
...
}
public class LoadTask extends AsyncTask<Context, Void, Integer> {
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
@Override
protected void onPreExecute() {
loading.show();
}
@Override
protected Integer doInBackground(Context... params) {
EventLoader el = new EventLoader(params[0]);
list = el.getMylist();
return el.getError();
}
protected void onPostExecute(Integer result) {
if (result == EventLoader.NO_HTTP_CONN) {
getErrorDialog(R.string.errore_caricamento, true).show();
} else if (result == EventLoader.ERR_JSON) {
getErrorDialog(R.string.errore_json, true).show();
} else if (result == EventLoader.ERR_NULL) {
getErrorDialog(R.string.errore_evento_null, true).show();
} else {
mainList=list;
Intent intent = new Intent(MainActivity.this, EventActivity.class);
intent.putExtra(Const.Tags.FULL_LIST, mainList);
loading.dismiss();
startActivity(intent);
}
}
}
對話列表的加載過程中正常工作,但這裏是我的問題:
- 解除
startActivity(intent)
之前的對話框會導致在創建新活動(有一個列表視圖需要使用自定義適配器填充)和實際恢復之前2-3秒沒有進度指示器,這對用戶不太友好。 - 解除
startActivity(intent)
之後的對話框會導致粗略處理對話框(先變暗背景,然後凍結...等等)。實際上它就像根本不打電話loading.dismiss()
,並讓它與活動一起銷燬。
ProgressDialog是否可以通過加載數據和創建新活動來持久化,並且在新活動UI準備好顯示時最終被解散?