首先,很抱歉英语不好。我有 android 2.3,所以有“Real”并行 AsyncTask 而不是顺序执行(android 3.0 和更高版本)。我有几个 AsyncTask,每个都执行 onPostExecute() 回调(我知道它将在 UI 线程中执行)。假设我只有 2 个并行 AsyncTask,当第一个任务完成时,回调 onPostExecute() 将被调用。是否有可能,当 onPostExecute()(来自第一个 AsyncTask)方法在 UI 线程上运行时,第二个任务正在调用其 onPostExecute() 方法,从而中断第一个 AsyncTask 的 onPostExecute() 的当前执行?
//更新我现在用代码解释它:
// AsyncTask1
onPostExecute(Result result) {
activity->processResult1(result);
}
// AsyncTask2
onPostExecute(Result result) {
activity->processResult2(result);
假设 AsyncTask1 已经完成了它的工作,并且 processResult1() 是一个运行时间很长的方法:当我们在 UI 线程上执行 processResult1() 时,AsyncTask2 完成了它的工作。现在会发生什么?
- processResult1() 将被 processResult2() 中断
- processResult2() 等到 processResult1() 结束