So far, we've carefully avoided being too specific about what exactly happens when we invoke the AsyncTask
execute method. We know that doInBackground()
will execute off the main thread, but what exactly does that mean?
The original goal of AsyncTask
was created to help developers avoid blocking the main thread. In its initial form at API level 3, AsyncTask
s 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 AsyncTask
s concurrently with each other—a level of concurrency of up to 128. At first glance, this seems like a good thing, since a common use case for AsyncTask
is to perform blocking I/O, where the thread spends much of its time idly waiting for data.
However, as we saw in Chapter 1, Building Responsive Android Applications, there are many issues that commonly...