【发布时间】:2014-03-18 16:07:11
【问题描述】:
考虑一下这个AsyncTask内部活动MyActivity:
private class MyTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog progressDialog;
private AlertDialog.Builder alertDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(MyActivity.this, "MyApp", "Working...");
}
@Override
protected Void doInBackground(Void... params) {
// elaborate...
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progressDialog.dismiss();
alertDialog = new AlertDialog.Builder(MyActivity);
alertDialog.setMessage("Done !");
alertDialog.show();
}
}
如果我声明会发生什么
private ProgressDialog progressDialog;
private AlertDialog.Builder alertDialog;
在AsyncTask之外,在活动范围内?
真的一样吗(对于内存泄漏和其他内部 Java 行为)?一个比另一个更好吗?
【问题讨论】:
-
我会避免保存对构建器的引用...如果您想记住 AlertDialog,请保存 alertDialog.show() 的引用;
标签: java android memory-leaks android-asynctask