Java if/switch评估是原子的吗?
假设我启动并Java if/switch评估是原子的吗?,java,android,asynchronous,Java,Android,Asynchronous,假设我启动并AsyncTask并持有对它的引用: AsyncTask task = new SomeAsyncTask().execute(); 然后在某个时刻,当任务仍在运行时,我执行以下操作: if(task.getStatus() == AsyncTask.Status.RUNNING) { task.cancel(true); } AsyncTask的状态能否在task.getStatus()==AsyncTask.status.RUNNING返回true并在调用cancel
AsyncTask
并持有对它的引用:
AsyncTask task = new SomeAsyncTask().execute();
然后在某个时刻,当任务仍在运行时,我执行以下操作:
if(task.getStatus() == AsyncTask.Status.RUNNING) {
task.cancel(true);
}
AsyncTask
的状态能否在task.getStatus()==AsyncTask.status.RUNNING
返回true
并在调用cancel()
之前变为FINISHED
换句话说,使用上面的代码
cancel()
是否可能在完成的AsyncTask
上被调用?是的,可能会发生,因此最好的方法是观察状态变量值的变化,有关更多详细信息,请查看链接。是的,这是可能的,这是异步编程的本质
但是,如果任务在这两个语句之间完成,您对取消的调用将是良性的。是的,这是可能的。是的,这是可能的。您可以在任务中使用wasCancelCalled()进行更多检查。如果您想在任务完成后执行某些操作,请使用onPostExecute。您将如何使用它来监视Android异步任务的状态?我想注释中已经提到了这一点。检查一下。