Sobes.tech
Junior — Middle

Jak se liší dynamická a statická registrace BroadcastReceiver v Androidu?

sobes.tech AI

Odpověď od AI

Na Androidu existují dva způsoby registrace BroadcastReceiver — statický a dynamický.

Statický je registrován v manifestu aplikace (AndroidManifest.xml). Tento přijímač je aktivován systémem i když aplikace neběží. Je vhodný pro poslouchání systémových broadcast zpráv, ale od Androidu 8.0 (Oreo) je statická registrace omezena pro většinu událostí.

Dynamický je registrován programově v kódu (obvykle v Activity nebo Service) pomocí metody registerReceiver(). Tento přijímač je aktivní pouze dokud je živý objekt, ve kterém je zaregistrován, a vyžaduje explicitní volání unregisterReceiver(). Dynamická registrace je flexibilnější a umožňuje poslouchat broadcast zprávy pouze během běhu komponenty.

Příklad dynamické registrace:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // zpracování události
    }
};

// V onCreate() nebo onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// V onDestroy() nebo onStop()
unregisterReceiver(receiver);