Уволить 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 вашей деятельности.

Другие вопросы по тегам