Как отличаются динамический и статический способы регистрации 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);