hpi*_*que 31 multithreading android android-asynctask
onPostExecute如果AsyncTask取消了会执行吗?
如果它确实执行了,是否可以安全地说我应该isCancelled在开始onPostExecute之前询问任务是否已被取消(),然后再做其他事情?
bai*_*ain 67
取消()上onPostExecute的记录行为在Android 2和Android 4之间发生了变化.
在doInBackground之后在UI线程上运行.指定的结果是doInBackground返回的值,如果任务被取消或发生异常,则返回null.
在doInBackground之后在UI线程上运行.指定的结果是doInBackground返回的值.如果任务被取消,则不会调用此方法.
因此,如果您仍在定位Android 2设备,则应假设将调用onPostExecute,并在onPostExecute中检查null结果.
根据我的经验,当取消任务时,实际上不会调用onPostExecute().但是,可以在任务的doInBackground()完成之后但在调用onPostExecute()之前取消任务 - 在这种情况下实际调用onPostExecute().因此,可以肯定的是,我在onPostExecute()中调用isCancelled()方法,如果任务已被取消,则只返回"return".这个对我有用.