HandlerThreads and communication between Threads
suggest changeAs Handler
s are used to send Message
s and Runnable
s to a Thread’s message queue it’s easy to implement event based communication between multiple Threads. Every Thread that has a Looper
is able to receive and process messages. A HandlerThread
is a Thread that implements such a Looper
, for example the main Thread (UI Thread) implements the features of a HandlerThread
.
Creating a Handler for the current Thread
Handler handler = new Handler();
Creating a Handler for the main Thread (UI Thread)
Handler handler = new Handler(Looper.getMainLooper());
Send a Runnable from another Thread to the main Thread
new Thread(new Runnable() { public void run() { // this is executed on another Thread // create a Handler associated with the main Thread Handler handler = new Handler(Looper.getMainLooper()); // post a Runnable to the main Thread handler.post(new Runnable() { public void run() { // this is executed on the main Thread } }); } }).start();
Creating a Handler for another HandlerThread and sending events to it
// create another Thread HandlerThread otherThread = new HandlerThread("name"); // create a Handler associated with the other Thread Handler handler = new Handler(otherThread.getLooper()); // post an event to the other Thread handler.post(new Runnable() { public void run() { // this is executed on the other Thread } });
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents