Какие знаешь типы Broadcast Receiver

«Какие знаешь типы Broadcast Receiver» — вопрос из категории Android компоненты, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android есть два основных типа BroadcastReceiver:

  1. Статические (зарегистрированные в манифесте)
    Объявляются в AndroidManifest.xml, работают даже когда приложение не запущено.
    <receiver android:name=".MyReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>
  1. Динамические (регистрируются в коде)
    Работают только когда активен компонент (Activity/Service), где зарегистрированы.
    val receiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            // Обработка
        }
    }
    registerReceiver(receiver, IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED))

Также различают:

  • Явные (explicit) - направлены конкретному компоненту
  • Неявные (implicit) - обрабатываются всеми подходящими ресиверами

Начиная с Android 8.0 (API 26) введены ограничения на неявные Broadcasts для оптимизации батареи.