Ответ
Broadcast в Android — это механизм для рассылки событий между компонентами. Есть два типа:
- Системные Broadcast (например,
ACTION_BATTERY_LOW) — объявляются системой. - Пользовательские Broadcast — создаются разработчиком.
Способы работы:
- Динамическая регистрация (через
registerReceiver()вActivity/Service). Отписываться вonDestroy():
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
// Обработка события
}
}
registerReceiver(receiver, IntentFilter("CUSTOM_ACTION"))
- Статическая регистрация (через
AndroidManifest.xml). Работает даже при закрытом приложении:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="CUSTOM_ACTION" />
</intent-filter>
</receiver>
Нюансы:
- На Android 8+ нельзя регистрировать неявные Broadcast статически (кроме разрешенных системных).
- Для межпроцессного взаимодействия лучше использовать
LocalBroadcastManager(устарел) илиLiveData/Flow+ ViewModel.