закрытие диалогового окна прогресса

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

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

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


person Andro Selva    schedule 06.06.2011    source источник


Ответы (4)


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

person Vincent Mimoun-Prat    schedule 06.06.2011
comment
Пожалуйста, постарайтесь быть более конкретным в следующий раз. - person Andro Selva; 02.07.2011
comment
@MarvinLabs: как это использовать ?? - person Deepzz; 22.11.2012

В порядке. Я нашел решение наконец.

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.
        }
    });
person Andro Selva    schedule 06.06.2011

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

person Ed Burnette    schedule 09.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;
}

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

person Balaji Khadake    schedule 06.06.2011
comment
где твой ответ? Вы можете остановить фоновую службу? - person Jaydeep Khamar; 06.06.2011