#android #android-asynctask #progressdialog
#Android #android-asynctask #progressdialog
Вопрос:
я загружаю данные с веб-сайта, используя asynctask
и мой код для асинхронной задачи приведен ниже
public class getSyncTaskInBackground extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
getSynchronizeTask();
return null;
}
@Override
protected void onPostExecute(Void result) {
if(progressDialog != null amp;amp; progressDialog.isShowing()) {
progressDialog.dismiss();
}
displaySynchronizetask();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(synchronize.this, "Tasks are synchroning...", "Please wait...");
super.onPreExecute();
}
@Override
protected void onCancelled() {
super.onCancelled();
if(progressDialog != null amp;amp; progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
}
этот поток требует больше времени для выполнения задачи
итак, если я хочу отменить этот поток между процессами, тогда мне пришлось записать этот код при нажатии кнопки «Назад»
или, если progressbar уже отключен, я хочу закрыть activity, вызвав finish();
мой код для кнопки «Назад» выглядит следующим образом
@Override
public void onBackPressed() {
syncThread.cancel(true); //syncThread is the object of getSyncTaskInBackground
if(progressDialog != null amp;amp; progressDialog.isShowing()) {
progressDialog.dismiss();
} else {
finish();
}
}
Теперь, когда я нажал кнопку «Назад», progressdialog
не отклоняется
есть ли ошибка в mycode? есть ли какой-нибудь способ удовлетворить мои потребности?
пожалуйста, помогите мне
Ответ №1:
Привет,
Возможно, вы захотите вызвать setCancelable с помощью true в вашем экземпляре ProgressDialog:http://developer.android.com/reference/android/app/Dialog.html#setCancelable (логическое значение)
Если вы хотите событие отмены вашего ProgressDialog
, вы можете установить OnCancelListener http://developer.android.com/reference/android/app/Dialog.html#setOnCancelListener(android.content.Диалоговый интерфейс.OnCancelListener)
надеюсь, это поможет