Sobes.tech
Junior — Middle

Como se diferenciam os métodos dinâmico e estático de registo do BroadcastReceiver no Android?

sobes.tech IA

Resposta da IA

No Android, existem duas formas de registar um BroadcastReceiver — estático e dinâmico.

Estático é registado no manifesto da aplicação (AndroidManifest.xml). Este receptor é ativado pelo sistema mesmo que a aplicação não esteja em execução. É conveniente para ouvir mensagens broadcast do sistema, mas a partir do Android 8.0 (Oreo), o registo estático está limitado para a maioria dos eventos.

Dinâmico é registado programaticamente no código (geralmente em um Activity ou Service) usando o método registerReceiver(). Este receptor está ativo apenas enquanto o objeto em que foi registado estiver vivo, e requer uma chamada explícita a unregisterReceiver(). O registo dinâmico é mais flexível e permite ouvir mensagens broadcast apenas durante a execução do componente.

Exemplo de registo dinâmico:

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

// Em onCreate() ou onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// Em onDestroy() ou onStop()
unregisterReceiver(receiver);