Sobes.tech
Junior — Middle

É necessário registar o BroadcastReceiver no ficheiro de manifesto ou pode-se ligá-lo programaticamente?

sobes.tech IA

Resposta da IA

No Android, o BroadcastReceiver pode ser registado de duas formas:

  1. No manifesto (estaticamente) — este método permite que o sistema saiba do receptor mesmo que a aplicação não esteja em execução. É útil para receber mensagens broadcast que devem iniciar a aplicação ou realizar ações em segundo plano.

  2. Programaticamente (dinamicamente) — o registo ocorre no código, geralmente nos métodos do ciclo de vida da Activity ou Service. Este método oferece maior controlo: o receptor está ativo apenas enquanto estiver registado, o que ajuda a economizar recursos e evitar fugas.

A escolha do método depende da tarefa. Por exemplo, para mensagens broadcast do sistema que devem ser processadas sempre, usa-se o registo no manifesto. Para eventos locais ou temporários, prefere-se o registo programático.

Exemplo de registo programático:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // processamento do evento
    }
};

// Registo
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// Cancelar registo
unregisterReceiver(receiver);