我的活动中有这个代码(LoadTask是一个内部类):
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准备好显示时被解除?
答案 0 :(得分:0)
如果您想要更顺畅的过渡,我建议您使用片段代替。或者你可以通过不填充列表视图直到onStart并确保它在后台线程上完成来使它稍微平滑。