Отмена прогрессадиалога и асинктаск

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

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

2 ответа

Решение

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

Вы можете использовать обратный вызов 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);
    }
});
Другие вопросы по тегам