执行顺序
首次引入时,AsyncTasks
在一个后台线程上连续执行。从 DONUT
开始,这被改为一个线程池,允许多个任务并行运行。从 HONEYCOMB
开始,任务在单个线程上执行,以避免由并行执行引起的常见应用程序错误。
如果你真的想要并行执行,你可以用 THREAD_POOL_EXECUTOR
调用 executeOnExecutor(java.util.concurrent.Executor, Object[])
。
SERIAL_EXECUTOR - >一个 Executor,以串行顺序一次执行一个任务。
THREAD_POOL_EXECUTOR - >可用于并行执行任务的执行器。
样品:
Task task = new Task();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
task.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, data);
else
task.execute(data);