Sobes.tech
Junior — Middle

Como determinar o Looper correto para usar com Handler ao trocar dados entre threads de fundo e principais?

sobes.tech IA

Resposta da IA

No Android, o Handler associa-se ao Looper, que gere a fila de mensagens para uma thread específica. Para trocar dados entre uma thread de fundo e a thread principal, deve-se usar o Looper correto:

  • Para a thread principal (UI), usa-se Looper.getMainLooper().
  • Para uma thread de fundo, pode-se criar um Looper próprio usando HandlerThread.

Exemplo:

// Para enviar mensagens para a thread principal
Handler mainHandler = new Handler(Looper.getMainLooper());

// Para a thread de fundo, criamos um HandlerThread
HandlerThread handlerThread = new HandlerThread("MyBackgroundThread");
handlerThread.start();
Handler backgroundHandler = new Handler(handlerThread.getLooper());

// Usamos mainHandler.post(...) para atualizar a UI a partir da thread de fundo
// Usamos backgroundHandler.post(...) para executar tarefas em segundo plano

Dessa forma, o Looper correto é escolhido com base na thread onde o código deve ser executado: para a UI — Looper.getMainLooper(), para o fundo — HandlerThread.getLooper().