Sobes.tech
Junior — Middle

Je třeba registrovat BroadcastReceiver v souboru manifestu nebo lze jej připojit programově?

sobes.tech AI

Odpověď od AI

V Androidu lze BroadcastReceiver zaregistrovat dvěma způsoby:

  1. V manifestu (staticky) — tento způsob umožňuje systému vědět o příjemci i tehdy, když aplikace neběží. Je vhodný pro příjem vysílacích zpráv, které mají spouštět aplikaci nebo provádět akce na pozadí.

  2. Programově (dynamicky) — registrace probíhá v kódu, obvykle v metodách životního cyklu Activity nebo Service. Tento způsob nabízí větší kontrolu: příjemce je aktivní pouze při registraci, což pomáhá šetřit zdroje a předcházet únikům.

Volba způsobu závisí na úkolu. Například pro systémové vysílací zprávy, které musí být vždy zpracovány, se používá registrace v manifestu. Pro lokální nebo dočasné události je vhodnější programová registrace.

Příklad programové registrace:

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

// Registrace
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// Odregistrace
unregisterReceiver(receiver);