Summary
In this chapter, we learned how to use Handler
to queue work for the main thread and how to use Looper
to build up a queueing infrastructure for our own Thread
.
We saw the different ways in which we can define work with Handler
: arbitrary work defined at the call site with Runnable
or predefined work implemented in the Handler
itself and triggered by message-sending.
In the meantime, we learned how to defer work properly without leaking memory on the way.
We learned how to use Handler
in a multithreaded application to pass work and results back and forth between cooperating threads, performing blocking operations on an ordinary background thread and communicating the results back to the main thread to update the user interface.
In the next chapter, we'll start to build responsive applications by applying the AsyncTask
instance to execute work in the background using pools of threads and returning progress updates and results to the main thread.