Sobes.tech
Junior — Middle

Come si differenziano i metodi dinamico e statico di registrazione di BroadcastReceiver in Android?

sobes.tech AI

Risposta dell'AI

Su Android, ci sono due modi per registrare un BroadcastReceiver — statico e dinamico.

Statico viene registrato nel manifesto dell'app (AndroidManifest.xml). Questo ricevitore viene attivato dal sistema anche se l'app non è in esecuzione. È utile per ascoltare i messaggi broadcast di sistema, ma a partire da Android 8.0 (Oreo), la registrazione statica è limitata per la maggior parte degli eventi.

Dinamico viene registrato programmaticamente nel codice (solitamente in un Activity o Service) usando il metodo registerReceiver(). Questo ricevitore è attivo solo mentre l'oggetto in cui è registrato è vivo, e richiede una chiamata esplicita a unregisterReceiver(). La registrazione dinamica è più flessibile e permette di ascoltare i messaggi broadcast solo durante l'esecuzione del componente.

Esempio di registrazione dinamica:

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

// In onCreate() o onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// In onDestroy() o onStop()
unregisterReceiver(receiver);