Sobes.tech
Junior

What is a Handler in Android?

sobes.tech AI

Answer from AI

Handler in Android is a mechanism for communication between threads. It allows sending and processing Message and Runnable from one thread to the message queue (MessageQueue) of another thread (usually the UI thread).

Main components:

  • Handler: An object associated with a specific thread and its MessageQueue. It sends messages and Runnables to the queue and also processes them by retrieving from the queue.
  • Looper: An object tied to a thread. It "starts" the thread, constantly retrieving tasks (Message or Runnable) from the MessageQueue and passing them to the appropriate Handler for processing.
  • MessageQueue: A queue of tasks (Message or Runnable) waiting to be processed by the Looper.

How it works:

  1. A Handler is created in the thread that will process messages (e.g., the UI thread).
  2. This Handler is associated with the Looper of that thread and its MessageQueue.
  3. From another thread (e.g., background), messages or Runnables can be sent to the MessageQueue via Handler methods (e.g., post or sendMessage).
  4. The Looper of the receiving thread retrieves tasks from the MessageQueue.
  5. The Looper passes each task to the corresponding Handler for processing.

Example of updating UI from a background thread:

// Creating a Handler in the UI thread
Handler uiHandler = new Handler(Looper.getMainLooper());

// In a background thread:
new Thread(new Runnable() {
    @Override
    public void run() {
        // Perform a long operation...

        // Update UI via Handler
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                // Code here safely updates the UI
                textView.setText("Operation completed!");
            }
        });
    }
}).start();

Handler is used for safely executing operations in a specific thread (most often the UI thread) without blocking the main thread. This is necessary because most UI operations should be performed only on the main thread.

What is a Handler in Android? — Android - sobes.tech