отклонение Прогресс Диалог - PullRequest
9 голосов
/ 06 июня 2011

У меня ситуация, когда я загружаю кучу изображений. Во время этого процесса я пытаюсь показать диалог прогресса до полной загрузки изображений. У меня есть overrided метод onBackPressed(), так что, когда пользователь нажимает кнопку «Назад», действие будет завершено.

Но если я нажму кнопку «Назад» во время отображения диалогового окна прогресса, событие «Назад» не будет вызвано. Поэтому я попытался предоставить progressDialog.setCancelable(true). Теперь это позволяет мне закрыть диалоговое окно прогресса, но мое событие back key все равно не вызывается, и моя деятельность загружает изображения в фоновом режиме.

Итак, как мне сделать так, чтобы progressDialog и действие были остановлены, когда пользователь нажимает клавишу возврата.

Ответы [ 4 ]

7 голосов
/ 06 июня 2011

Хорошо. Я наконец нашел решение.

progressDialog.setCancelable(true);
    progressDialog.setOnCancelListener(new OnCancelListener() {

        public void onCancel(DialogInterface dialog) {

        Log.i("inside on cancel","Cancel Called");  
        finish(); //If you want to finish the activity.
        }
    });
7 голосов
/ 06 июня 2011

Используйте Dialog.setOnCancelListener , чтобы отменить фоновое задание

3 голосов
/ 09 июня 2011

Загрузите ваши изображения в другой теме. Когда пользователь указывает, что хочет отменить загрузку, установите флаг, который проверяется в цикле обработки потока загрузки. Вы также можете вызвать метод interrupt () загрузочного потока для обработки тех случаев, когда поток застрял в wait () или sleep () или что-то в этом роде.

1 голос
/ 06 июня 2011

Используйте метод onKeyDown (), однако вам нужно будет проверить, показывает ли диалоговое окно, является ли нажатая кнопка кнопкой «назад», и вам также следует вызвать super.onKeyDown (), чтобы убедиться, чточто метод по умолчанию также выполняется.

 public boolean onKeyDown(int keyCode, KeyEvent event) 

{

if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing())
{
    // DO WHATEVER YOU WANT
}

// Call super code so we dont limit default interaction
super.onKeyDown(keyCode, event);

return true;
}

Можете ли вы вставить код для правильного ответа?

...