【发布时间】:2016-06-29 21:12:56
【问题描述】:
我了解 Java 中内存泄漏的基本概念(即一些不需要的对象仍然被其他人引用,无法被 GC)。
如何将此概念映射到 Android 中的 WindowLeaked 异常?
例如,以下代码会在以下情况下引发WindowLeaked 异常
在AsyncTask 执行期间更改方向。在这种情况下,什么
对象仍然持有不需要的引用? ProgressDialog 还是 Activity?
public class WindowLeakedTestActivity extends AppCompatActivity {
...
static class MyTask extends AsyncTask<Void, Void, String> {
Context context;
private ProgressDialog mProgress;
public MyTask(Context c) {
context = c;
}
protected void onPreExecute() {
super.onPreExecute();
mProgress = ProgressDialog.show(context, "hello world", "wait", true, true);
}
protected String doInBackground(Void... params) {
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "";
}
}
}
【问题讨论】:
标签: android memory-leaks android-asynctask android-windowmanager