Sobes.tech
Junior — Middle

Como é que as formas de registar o BroadcastReceiver diferem, se usar uma abordagem estática ou dinâmica?

sobes.tech IA

Resposta da IA

O registo estático do BroadcastReceiver ocorre através da declaração no AndroidManifest.xml. Este receptor está sempre ativo quando a aplicação está instalada e pode receber mensagens broadcast do sistema mesmo que a aplicação não esteja em execução.

O registo dinâmico é feito por código (geralmente numa Activity ou Service) usando o método registerReceiver(). Este receptor está ativo apenas enquanto estiver registado (por exemplo, enquanto a Activity estiver ativa) e é automaticamente removido ao chamar unregisterReceiver().

Principais diferenças:

  • Receptor estático:

    • Registado no manifesto.
    • Funciona sempre, mesmo que a aplicação não esteja em execução.
    • Adequado para eventos do sistema.
  • Receptor dinâmico:

    • Registado e removido no código.
    • Funciona apenas durante o período de registo.
    • Permite gerir de forma flexível o ciclo de vida.

Exemplo de registo dinâmico:

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

@Override
protected void onResume() {
    super.onResume();
    registerReceiver(receiver, new IntentFilter("android.intent.action.SOME_ACTION"));
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
}

Assim, a escolha do método de registo depende dos requisitos de duração de vida do receptor e do contexto de utilização.