让我说我开始并AsyncTask
并持有对它的引用:
AsyncTask task = new SomeAsyncTask().execute();
然后在某个时刻,当任务仍在运行时,我执行以下操作:
if(task.getStatus() == AsyncTask.Status.RUNNING) {
task.cancel(true);
}
<{strong> AsyncTask
之后FINISHED
task.getStatus() == AsyncTask.Status.RUNNING {}返回true
之前 {{1>被叫?
换句话说,使用上面的cancel()
代码是否可能会在完成的cancel()
上调用?
答案 0 :(得分:3)
是的,这是可能的,这是异步的本质。编程。
但是,如果任务在这两个陈述之间完成,那么您对cancel
的呼吁将是良性的。
答案 1 :(得分:0)
是的,它可能会发生,所以最好的方法是用来观察STATUS
变量值的变化。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html,有关详细信息,请查看链接。