Sobes.tech
Junior — Middle

Kako se razlikuju dinamički i statički načini registracije BroadcastReceiver-a u Androidu?

sobes.tech АИ

Одговор од АИ

На Android postoji dva načina za registraciju BroadcastReceiver — statički i dinamički.

Statički se registruje u manifestu aplikacije (AndroidManifest.xml). Ovaj prijemnik se aktivira od strane sistema čak i ako aplikacija nije pokrenuta. Pogodan je za slušanje sistemskih broadcast poruka, ali od Android 8.0 (Oreo), statička registracija je ograničena za većinu događaja.

Dinamički se programatski registruje u kodu (obično u Activity ili Service) pomoću metode registerReceiver(). Ovaj prijemnik je aktivan samo dok je objekat u kojem je registrovan živ, i zahteva eksplicitni poziv unregisterReceiver(). Dinamička registracija je fleksibilnija i omogućava slušanje broadcast poruka samo tokom rada komponenti.

Primer dinamičke registracije:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // obrada događaja
    }
};

// U onCreate() ili onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// U onDestroy() ili onStop()
unregisterReceiver(receiver);