val intent = Intent(MyBroadcastReceiver::class.java)
context.sendBroadcast(intent)
В примере выше сообщение получит только
MyBroadcastReceiver
.Если
intent
содержит action
, то сообщение получат все ресиверы, зарегистрированные с соответствующим интент фильтром:val intent = Intent("my_custom_action")
context.sendBroadcast(intent)
Этот интент получит ресивер, содержащий
my_custom_action
в IntentFilter
. Пример такого ресивера.Когда отправляется обычный броадкаст, порядок получения сообщений не определен. Ресиверы не могут изменять сообщение или останавливать броадкаст.
2. Упорядоченный броадкаст. Отправляется методом sendOrderedBroadcast(intent: Intent, permission: String). Сообщение принимается в порядке, заданном атрибутом
priority
объекта IntentFilter
. Ресиверы с одинаковым приоритетом получают сообщение в произвольном порядке.Когда отправляется упорядоченный броадкаст, ресиверы могут передавать данные (result сode / result data / result extras) следующим ресиверам или останавливать отправку.
Упорядоченные броадкасты разберем подробнее в следующих постах.
3. Локальный броадкаст. Отправляется методом LocalBroadcastManager.sendBroadcast(intent: Intent). Сообщения доставляются только тем ресиверам, которые зарегистрированны в этом же приложении. Отправка локальных броадкастов эффективнее, чем обычный броадкаст, т.к. не требуется коммуникация между процессами.