Я хочу принудительно отменить AsyncTask. Я вижу, что вы можете использовать isCancelled() как в этом действительном решении (который под капотом используется AtomicBoolean.
Но я вижу такие решения, как suspiciousSolution1, suspiciousSolution2, suspiciousSolution3, где введен новый флаг private boolean isTaskCancelled = false;
.
И я начал задаваться вопросом - поскольку этот флаг изменен в
public void cancelTask(){
isTaskCancelled = true;
}
который выполняется на некотором потоке и читается в
protected Void doInBackground( Void... ignoredParams ) {
//Do some stuff
if (isTaskCancelled()){
return;
}
}
который работает в WorkerThread, тогда флаг флага isTaskCancelled
не должен быть volatile (или AtomicBoolean, как в реализации Google).