Sobes.tech
Назад к вопросам
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);
}

Таким образом, выбор способа регистрации зависит от требований к времени жизни ресивера и контекста использования.