Ответ
BroadcastReceiver может обрабатывать два типа сообщений:
-
Нормальные (Normal broadcasts) - асинхронные, доставляются всем зарегистрированным ресиверам в произвольном порядке. Отправляются через
sendBroadcast(). -
Упорядоченные (Ordered broadcasts) - доставляются последовательно, согласно приоритету. Ресивер может прервать цепочку (
abortBroadcast()) или изменить данные. Отправляются черезsendOrderedBroadcast().
Пример регистрации в манифесте:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.example.MY_ACTION"/>
</intent-filter>
</receiver>
Пример динамической регистрации:
val filter = IntentFilter("com.example.MY_ACTION")
registerReceiver(myReceiver, filter)
Также есть локальные broadcasts (через LocalBroadcastManager), но он deprecated - вместо него рекомендуется использовать LiveData или RxJava.