Sobes.tech
Junior — Middle

Как се различават динамичният и статичният начин за регистрация на BroadcastReceiver в Android?

sobes.tech AI

Отговор от AI

В Android има два начина за регистрация на BroadcastReceiver — статичен и динамичен.

Статичен се регистрира в манифеста на приложението (AndroidManifest.xml). Този приемник се активира от системата дори ако приложението не е стартирано. Той е удобен за слушане на системни широковещателни съобщения, но от Android 8.0 (Oreo) статичната регистрация е ограничена за повечето събития.

Динамичен се регистрира програмно в кода (обикновено в Activity или Service) с помощта на метода registerReceiver(). Този приемник е активен само докато живее обектът, в който е регистриран, и изисква явен извикване на unregisterReceiver(). Динамичната регистрация е по-гъвкава и позволява слушане на широковещателни съобщения само по време на работата на компонента.

Пример за динамична регистрация:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // обработка на събитието
    }
};

// В onCreate() или onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

// В onDestroy() или onStop()
unregisterReceiver(receiver);