Sobes.tech
Junior — Middle

Czy trzeba zarejestrować BroadcastReceiver w pliku manifestu, czy można go podłączyć programowo?

sobes.tech AI

Odpowiedź od AI

W Androidzie BroadcastReceiver można zarejestrować na dwa sposoby:

  1. W manifeście (statycznie) — ta metoda pozwala systemowi znać o odbiorniku nawet wtedy, gdy aplikacja nie jest uruchomiona. Jest to wygodne do odbierania komunikatów broadcast, które mają uruchamiać aplikację lub wykonywać działania w tle.

  2. Programowo (dynamicznie) — rejestracja odbywa się w kodzie, zazwyczaj w metodach cyklu życia Activity lub Service. Ta metoda daje większą kontrolę: odbiornik jest aktywny tylko podczas rejestracji, co pomaga oszczędzać zasoby i unikać wycieków.

Wybór metody zależy od zadania. Na przykład, dla systemowych komunikatów broadcast, które muszą być obsługiwane zawsze, używa się rejestracji w manifeście. Dla lokalnych lub tymczasowych zdarzeń — rejestracji programowej.

Przykład rejestracji programowej:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // obsługa zdarzenia
    }
};

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

// Anulowanie rejestracji
unregisterReceiver(receiver);