AsyncTask не работает с ProgressDialog в Android

#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)

надеюсь, это поможет