What's the difference between using execute()
and executeOnExecuter()
?
How does execute()
execute tasks by default? (in serial or in parallel?)
What should be used for new SDKs >16?
Is it a good practice to use parallel execution (THREAD_POOL_EXECUTOR
) for tasks rather than serial even if it doesn't matter for the application or does that depends on the number of AsyncTask
s that will be executed?
.execute() - this function schedules the task on a queue for a single background thread. Means that if you are calling two AsyncTasks and using .execute() method to call them, they will execute in a queue(first then second).
.executeOnExecutor() - If you want parallel execution of both AsyncTasks, you can use this method for execution of AsyncTask. Means both asyncTasks will execute simultaneously.
In simple words: .execute() method creates a single thread for execution of asyncTasks, and .executeOnExecuter() method creates separate thread for each ayncTask.
.execute executes tasks by default in serial order.
EDITED: If you want to use executeOnExecutor() you can use this code:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
task.execute();
Before HONEYCOMB execute() method run AsynkTask in parallel.