Отмена progressdialog и asynctask

Я показываю диалоговое окно с возможностью отмены во время выполнения асинхронной задачи. Когда я нажимаю кнопку «Назад», я хочу, чтобы диалоговое окно исчезло, а также чтобы отменить запущенную асинхронную задачу. Проблема в том, что экземпляр диалогового окна не известен асинтаске, поэтому я не могу отменить диалог после отмены асинхронной задачи.

В настоящее время он отменяется только после того, как я дважды нажал кнопку «Назад».


person deimos1988    schedule 15.04.2014    source источник
comment
пожалуйста, поделитесь своим кодом   -  person meda    schedule 15.04.2014
comment
опубликуйте свой код :) приятель   -  person Stack Overflow User    schedule 15.04.2014
comment
пример отмены асинхронной задачи quicktips.in/correct -way-to-cancel-an-asynctask-in-android   -  person Deepak Swami    schedule 29.06.2016


Ответы (2)


Диалоговые окна имеют onDismissed обратный вызов, используйте это, чтобы убить асинхронную задачу.

person meredrica    schedule 15.04.2014

Вы можете использовать обратный вызов ProgressDialog при отмене:

this.dialog = new ProgressDialog(context);
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(true);
this.dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
    @Override
    public void onCancel(DialogInterface dialog)
    {
        // cancel AsyncTask
        cancel(false);
    }
});
person Anthony Raymond    schedule 15.04.2014
comment
Проблема в том, что мой экземпляр диалога не известен асинхронной задаче, поэтому я не могу использовать onCancel для отмены асинхронной задачи. - person deimos1988; 16.04.2014
comment
Почему бы вам не начать диалоговое окно прогресса в AsyncTask? - person Anthony Raymond; 16.04.2014