Sobes.tech
Junior — Middle

Hogyan különböznek a dinamik és statikus BroadcastReceiver regisztrációs módszerek Androidban?

sobes.tech MI

Válasz az MI-től

Androidon két módja van a BroadcastReceiver regisztrálásának — statikus és dinamikus.

Statikus a alkalmazás manifestjében (AndroidManifest.xml) kerül regisztrálásra. Ez a fogadó a rendszer által aktiválódik, még akkor is, ha az alkalmazás nincs futásban. Hasznos rendszerüzenetek hallgatására, de az Android 8.0 (Oreo) óta a statikus regisztráció a legtöbb esemény esetén korlátozott.

Dinamikus programozott módon regisztrálható a kódban (általában Activity vagy Service-ben) a registerReceiver() metódus segítségével. Ez a fogadó csak akkor aktív, amíg a regisztrált objektum él, és kifejezetten az unregisterReceiver() hívását igényli. A dinamikus regisztráció rugalmasabb, és lehetővé teszi, hogy csak a komponens működése közben hallgasson broadcast üzeneteket.

Dinamikus regisztráció példája:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // esemény feldolgozása
    }
};

// onCreate() vagy onStart() alatt
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// onDestroy() vagy onStop() alatt
unregisterReceiver(receiver);