AsyncTask не работает с ProgressDialog в Android - PullRequest
0 голосов
/ 13 мая 2011

Я загружаю данные с сайта, используя 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 && 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 && progressDialog.isShowing()) {
            progressDialog.dismiss();
        }
    }

}

эта тема занимает больше времени для завершения задачи так что если я хочу отменить этот поток между процессами, то я должен был написать этот код нажатой кнопки возврата или если прогрессбар уже отклонен, то я хочу закрыть активность, вызвав finish(); мой код для кнопки возврата, как показано ниже

@Override
public void onBackPressed() { 
    syncThread.cancel(true); //syncThread is the object of getSyncTaskInBackground
if(progressDialog != null && progressDialog.isShowing()) {
    progressDialog.dismiss();
} else {
    finish();   
}
}

Теперь, когда я нажал кнопку "Назад", progressdialog не исчезает есть какая-то ошибка в моем коде? есть ли способ удовлетворить мою потребность? пожалуйста, помогите мне

1 Ответ

4 голосов
/ 13 мая 2011

Привет
Возможно, вы захотите вызвать setCancelable со значением true для вашего экземпляра progressDialog: http://developer.android.com/reference/android/app/Dialog.html#setCancelable(boolean)

Если вы хотите событие по отмене вашего progressDialog
, вы можете установитьonCancelListener http://developer.android.com/reference/android/app/Dialog.html#setOnCancelListener(android.content.DialogInterface.OnCancelListener)

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

...