Sobes.tech
Junior

O que é um Handler no Android?

sobes.tech IA

Resposta da IA

Handler é um mecanismo para enviar e processar objetos Message e Runnable de um thread que cria o Handler para outro thread (ou para o mesmo).

Permite agendar a execução de código num thread específico, mesmo que esteja noutro thread. O Handler está associado ao Looper, que processa a fila de mensagens no thread.

Componentes principais:

  • Handler: Envia mensagens e tarefas, e as processa no thread associado.
  • Looper: Inicia o ciclo de processamento da fila de mensagens para um thread específico. Cada thread pode ter apenas um Looper, mas nem todos os threads têm por padrão (por exemplo, o thread principal tem).
  • MessageQueue: Fila de mensagens associada ao Looper.
  • Message/Runnable: Objetos enviados através do Handler para execução.

Aplicações:

  • Atualizar a interface de utilizador a partir de um thread não-UI.
  • Agendar tarefas com atraso ou em um momento específico.
  • Enviar mensagens entre threads.
// Exemplo de uso de Handler para atualizar a UI a partir de um thread em segundo plano
Handler mainHandler = new Handler(Looper.getMainLooper()); // Obter o Handler do thread principal

new Thread(() -> {
    // Executar alguma operação prolongada em background
    String result = doBackgroundWork();

    // Enviar o resultado ao thread principal para atualizar a UI
    mainHandler.post(() -> {
        // Este código será executado no thread principal
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Simulação de trabalho longo
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Resultado do trabalho em background";
}

private void updateTextView(String text) {
    // Atualizar elemento de UI
    // someTextView.setText(text);
}