Sobes.tech
Junior — Middle

Kuidas erinevad Androidis BroadcastReceiver dünaamiline ja staatiline registreerimise viis?

sobes.tech AI

Vastus AI-lt

Androidis on kaks viisi BroadcastReceiver registreerimiseks — statiline ja dünaamiline.

Statiline registreeritakse rakenduse manifestis (AndroidManifest.xml). Selline vastuvõtja aktiveerub süsteemi poolt isegi siis, kui rakendus ei tööta. See on mugav süsteemsete levitavate sõnumite kuulamiseks, kuid alates Android 8.0 (Oreo) on statiline registreerimine suurema osa sündmuste puhul piiratud.

Dünaamiline registreeritakse programmikoodis (tavaliselt Activity või Service) meetodi registerReceiver() abil. Selline vastuvõtja on aktiivne ainult seni, kuni registreeritud objekt on elus, ning nõuab otsest unregisterReceiver() väljakutset. Dünaamiline registreerimine on paindlikum ja võimaldab kuulata levitavaid sõnumeid ainult komponendi töö ajal.

Dünaamilise registreerimise näide:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // sündmuse töötlemine
    }
};

// onCreate() või onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// onDestroy() või onStop()
unregisterReceiver(receiver);