Sobes.tech
Middle

O que é o Looper no Android?

sobes.tech IA

Resposta da IA

Looper é um objeto concebido para executar uma tarefa várias vezes num único thread. Cria um ciclo de eventos que processa mensagens da fila de mensagens (MessageQueue).

Componentes principais:

  • MessageQueue: Fila de tarefas ou mensagens.
  • Looper: Objeto que extrai mensagens de MessageQueue e as envia ao Handler correspondente.
  • Handler: Objeto associado a um thread e MessageQueue específicos. É usado para enviar mensagens para MessageQueue e processá-las.

Princípio de funcionamento:

  1. O thread que deseja usar o Looper chama Looper.prepare() para criar um Looper e MessageQueue.
  2. O thread chama Looper.loop() para iniciar o ciclo de processamento de mensagens. Esta função bloqueia o thread até que Looper.quit() seja chamado.
  3. Handler cria e envia mensagens para MessageQueue, relacionadas com este Looper.
  4. O Looper extrai as mensagens de MessageQueue na ordem e as passa de volta ao Handler para processamento no método handleMessage().

Aplicações:

  • Os threads de interface de utilizador (UI Thread) no Android usam o Looper para lidar com eventos como cliques e toques sem bloquear a UI.
  • Os threads de fundo podem usar o Looper para realizar tarefas repetitivas ou processar mensagens enviadas por outros threads.
// Exemplo de criação e execução do Looper num thread de fundo
class WorkerThread extends Thread {
    public Handler handler;

    public void run() {
        Looper.prepare(); // Criar Looper e MessageQueue para este thread
        handler = new Handler(Looper.myLooper()) { // Criar Handler
            @Override
            public void handleMessage(Message msg) {
                // Processar mensagem aqui
            }
        };
        Looper.loop(); // Iniciar ciclo de processamento de mensagens
    }
}