Controlling the level of concurrency
So far, we've carefully avoided being too specific about what exactly happens when we invoke AsyncTask's
execute method. We know that
doInBackground will execute off the main thread, but what exactly does that mean?
The original goal of
AsyncTask was to help developers avoid blocking the main thread. In its initial form at API level 3, AsyncTasks were queued and executed serially (that is, one after the other) on a single background thread, guaranteeing that they would complete in the order they were started.
This changed in API level 4 to use a pool of up to 128 threads to execute multiple AsyncTasks concurrently with each other—a level of concurrency of up to 128. At first glance, this seems like a good thing, ...