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
Looperpróprio usandoHandlerThread.
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().