Способы регистрации BroadcastReceiver и их различия

Есть всего два различных способа регистрации BroadcastReceiver: статический и динамический. Статический способ регистрации — это когда ресивер зарегистрирован через AndroidManifest.xml файл используя тег <receiver>. Динамический же означает, что ресивер был зарегистрирован используя метод класса Context, registerReceiver().

При регистрации ресивера через манифест система запустит ваше приложение (если оно еще не запущено), когда броадкаст будет отправлен. Если же ресивер был зарегистрирован через context.registerReceiver(), то ресивер будет зарегистрирован до тех пор, пока живет контекст на который он зарегистрирован.

Вот статический способ регистрации ресивера:

<receiver android:name=".MyBroadcastReceiver"  android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
    </intent-filter>
</receiver>

Вот динамический способ регистрации ресивера:

val br: BroadcastReceiver = MyBroadcastReceiver()
val filter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION).apply {
    addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED)
}
registerReceiver(br, filter)

IntentFilter используется чтобы объявить действия на которые должен реагировать данный BroadcastReceiver.

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *