Sobes.tech
Назад к вопросам
Junior — Middle
69

Как отличаются динамический и статический способы регистрации BroadcastReceiver в Android?

Компании, где спрашивали
СБЕР АвтотехСБЕР Автотех

Ответ от нейросети

sobes.tech 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);