Назад к вопросам
СБЕР
Junior — Middle
69
Как отличаются способы регистрации BroadcastReceiver, если использовать статический или динамический подход?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Статическая регистрация BroadcastReceiver происходит через объявление в AndroidManifest.xml. Такой ресивер активен всегда, когда приложение установлено, и может принимать системные широковещательные сообщения даже если приложение не запущено.
Динамическая регистрация выполняется программно в коде (обычно в Activity или Service) с помощью метода registerReceiver(). Такой ресивер активен только пока зарегистрирован (например, пока активна Activity), и автоматически снимается при вызове unregisterReceiver().
Основные отличия:
-
Статический ресивер:
- Регистрируется в манифесте.
- Работает всегда, даже если приложение не запущено.
- Подходит для системных событий.
-
Динамический ресивер:
- Регистрируется и снимается в коде.
- Работает только во время регистрации.
- Позволяет гибко управлять временем жизни.
Пример динамической регистрации:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// обработка события
}
};
@Override
protected void onResume() {
super.onResume();
registerReceiver(receiver, new IntentFilter("android.intent.action.SOME_ACTION"));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
Таким образом, выбор способа регистрации зависит от требований к времени жизни ресивера и контекста использования.