In this chapter we used Handler to queue work for the main thread to process, as a means of maintaining responsiveness in a single-threaded application.

We saw the different ways 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.

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.

We also met HandlerThread and used it to create a background thread with its own Looper, allowing us to use these same ...

Get Asynchronous Android now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.