我想强制取消AsyncTask。我看到可以使用isCancelled(),就像此有效解决方案一样(在底层使用AtomicBoolean)。
但是我看到了一些解决方案,例如可疑解决方案1、可疑解决方案2、可疑解决方案3,其中引入了新标志private boolean isTaskCancelled = false;
。
我开始想知道-由于该标志在...
public void cancelTask(){
isTaskCancelled = true;
}
它运行在某个线程上,并且被读取。
protected Void doInBackground( Void... ignoredParams ) {
//Do some stuff
if (isTaskCancelled()){
return;
}
}
如果运行在WorkerThread中,那么标记isTaskCancelled
应该是易失性的(或者像Google的实现一样使用AtomicBoolean)。