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
Handlerpara 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);
}