Какие знаешь виды сообщений у BroadcastReceiver

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

Ответ

BroadcastReceiver может обрабатывать два типа сообщений:

  1. Нормальные (Normal broadcasts) - асинхронные, доставляются всем зарегистрированным ресиверам в произвольном порядке. Отправляются через sendBroadcast().

  2. Упорядоченные (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.