[Android] Чтобы отменить отмену AsyncTask не должен периодически проверять флаг в doInBackground, будет неустойчивым?


Answers

Попробуй это

инициализировать

  private AysncTask aysncTask;

Вызов задачи

   aysncTask=new AysncTask();
        aysncTask.execute();

Задание Отменить, где вы ХОТИТЕ

  if ( aysncTask != null && aysncTask.getStatus() == aysncTask.Status.RUNNING ){
        aysncTask.cancel(true);

    }
Question

Я хочу отключить AsyncTask. Я вижу, что вы можете использовать isCancelled (), как в этом действительном решении (которое под капотом использует AtomicBoolean .

Но я вижу решения вроде private boolean isTaskCancelled = false; , где есть новый флаг, введенный private boolean isTaskCancelled = false; ,

И я начал задаваться вопросом - поскольку этот флаг изменен в

public void cancelTask(){
   isTaskCancelled = true;
}

который работает на некотором потоке и читается в

protected Void doInBackground( Void... ignoredParams ) {
    //Do some stuff
    if (isTaskCancelled()){
        return;
    }
}

который запускается в WorkerThread , то не следует, чтобы флаг isTaskCancelled был изменчивым (или AtomicBoolean, как при реализации Google).




Links