Когда стоит использовать BroadcastReceiver

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

Ответ

BroadcastReceiver используется для реагирования на системные или кастомные широковещательные сообщения. Основные сценарии:

  1. Системные события (изменение состояния сети, зарядка, завершение загрузки):
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
  1. Межпроцессное взаимодействие (когда нужно уведомить несколько компонентов)

  2. Фоновые операции (но с ограничениями начиная с Android 8+)

Важно:

  • Для Android 8+ используйте Context.registerReceiver() вместо манифеста
  • Избегайте долгих операций - лучше запускать Service/WorkManager
  • Для межкомпонентного взаимодействия в одном приложении предпочтительнее LiveData/Flow

Пример регистрации в коде:

val receiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        // handle event
    }
}
registerReceiver(receiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))