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 "";
}
}
}
を破壊し、再度ロードするアンドロイド原因活性の回転を変化させるためがProgressDialog
によって引き起こされるWindowLeaked。
したがって、アクティビティが破棄される前にmProgress.dismiss()
に電話する必要があります。
お返事ありがとうございます!なぜ 'アクティビティ 'が破壊されたときに' progressdialog'がリークするのか? – JackWM
http://stackoverflow.com/a/21986772/966550 – waqaslam
いいリンク。しかし、誰が「progressdialog」への参照を保持しているのかをGCedできないように答えることはできません。 – JackWM