Отмена прогрессадиалога и асинктаск
Я отображаю отменяемое диалоговое окно прогресса во время выполнения асинхронной задачи. Когда я нажимаю кнопку "Назад", я хочу, чтобы оба диалоговых окна исчезли, а также отменили запущенную асинхронную задачу.Проблема заключается в том, что экземпляр диалогового окна неизвестен асинхронной задаче, поэтому я не могу отменить диалоговое окно после отмены асинктической задачи.
В настоящее время он отменяется только после того, как я дважды нажал кнопку возврата.
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);
}
});