Sobes.tech
Junior

What is a Handler in Android?

sobes.tech AI

Answer from AI

Handler is a mechanism for sending and processing Message and Runnable objects from one thread to another (or the same) thread.

It allows scheduling code execution in a specific thread, even if you are in a different thread. Handler is associated with a Looper, which processes the message queue in the thread.

Main components:

  • Handler: Sends messages and tasks, processes them in the associated thread.
  • Looper: Runs the message queue processing loop for a specific thread. Each thread can have only one Looper, but not every thread has one by default (for example, the main thread has one).
  • MessageQueue: The message queue associated with a Looper.
  • Message/Runnable: Objects sent through Handler for execution.

Usage:

  • Updating UI from a non-UI thread.
  • Scheduling tasks with delay or at a specific time.
  • Sending messages between threads.
// Example of using Handler to update UI from a background thread
Handler mainHandler = new Handler(Looper.getMainLooper()); // Get the main thread's Handler

new Thread(() -> {
    // Perform some long operation in the background thread
    String result = doBackgroundWork();

    // Send the result to the main thread to update UI
    mainHandler.post(() -> {
        // This code will run on the main thread
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Simulate long work
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Background work result";
}

private void updateTextView(String text) {
    // Update UI element
    // someTextView.setText(text);
}
What is a Handler in Android? — Android - sobes.tech