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

Какие отличия существуют между динамическим и статическим механизмом Broadcast Receiver в Android?

Компании, где спрашивали
ПСБ

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

sobes.tech AI

В Android существуют два способа регистрации Broadcast Receiver: статический и динамический.

Статический Broadcast Receiver:

  • Регистрируется в манифесте приложения (AndroidManifest.xml).
  • Срабатывает даже если приложение не запущено.
  • Используется для получения широковещательных сообщений от системы или других приложений.
  • Минус: начиная с Android 8.0 (API 26) многие системные широковещательные сообщения нельзя принимать статически, чтобы экономить ресурсы.

Динамический Broadcast Receiver:

  • Регистрируется программно в коде с помощью registerReceiver().
  • Активен только пока приложение или компонент (например, Activity) жив.
  • Позволяет более гибко управлять временем жизни ресивера.
  • Можно регистрировать и отменять регистрацию в нужные моменты.

Итого:

  • Статический ресивер — всегда активен, регистрируется в манифесте.
  • Динамический — активен только во время работы приложения, регистрируется в коде.

Пример динамической регистрации:

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

@Override
protected void onStart() {
    super.onStart();
    IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
    registerReceiver(receiver, filter);
}

@Override
protected void onStop() {
    super.onStop();
    unregisterReceiver(receiver);
}