时间:2010-07-26 12:43:59

标签: android multithreading android-asynctask

3 个答案:

答案 0 :(得分:67)

在Android 2和Android 4之间,在cancel()上记录的onPostExecute行为已经改变。

Android 2.3.7 onPostExecute

  

在doInBackground之后在UI线程上运行。指定的结果是   doInBackground返回的值,如果任务被取消,则返回null   或发生例外。

Android 4.0.1 onPostExecute

  

在doInBackground之后在UI线程上运行。指定的结果是   doInBackground返回的值。如果,则不会调用此方法   任务被取消了。

因此,如果您仍在定位Android 2设备,则应假设将调用onPostExecute并在onPostExecute中检查null结果。

答案 1 :(得分:7)

答案 2 :(得分:6)

检查AsyncTask源代码后,即使任务被取消,似乎也会调用onPostExecute。但是,在调用onPostExecute之前,如果任务已被取消,则结果将设置为null(?)。

编辑:@bain提供更新的answer