Уволить ProgressDialog, но все еще утечки
Когда я пытаюсь завершить свою деятельность, я получаю сообщение об утечке окон.
Я посмотрел на множество подобных вопросов по этому поводу, и ответ должен был использовать dismiss()
вместо hide()
или закрыть диалог перед вызовом finish()
,
Я звоню dismiss()
затем позвоните finish()
почему у меня течь?
Вот мой ProgressDialog
код в классе, расширяющем AsyncTask
public Background(Context c){
context = c; //the activity's context
dialog = new ProgressDialog(c);
}
protected void onPreExecute(){
dialog.show();
}
protected String doInBackground(String... urls) {
//do http request
return "";
}
protected void onPostExecute(String result) {
dialog.dismiss();
if(request == LOGOUT_REQUEST)
finish();
else{
getResults(document);
}
}
Это работало раньше, но я считаю, что мой код был неправильным. Я начинал новую деятельность с прежней, вместо того, чтобы просто вызывать финиш, что, по моему мнению, является правильным решением.
1 ответ
Вы закрываете диалог в onPostExecute
метод. Этот метод не будет работать, если AsyncTask
завершено. Вы только получаете ошибку, когда вы выходите из приложения с кнопкой назад? Если это так, вы также должны убедиться, что диалог закрывается в onDestroy
вашей деятельности.