Приведи пример использования BroadcastReceiver

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

Ответ

BroadcastReceiver позволяет реагировать на системные или кастомные события. Пример: регистрация ресивера для события ACTION_AIRPLANE_MODE_CHANGED.

1. Объявление в манифесте:

<receiver android:name=".AirplaneModeReceiver">
    <intent-filter>
        <action android:name="android.intent.action.AIRPLANE_MODE"/>
    </intent-filter>
</receiver>

2. Класс ресивера:

class AirplaneModeReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val isEnabled = Settings.Global.getInt(
            context.contentResolver,
            Settings.Global.AIRPLANE_MODE_ON
        ) != 0
        Toast.makeText(context, "Airplane mode: $isEnabled", Toast.LENGTH_SHORT).show()
    }
}

Важно: Для Android 8+ динамическая регистрация предпочтительнее:

val filter = IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED)
registerReceiver(receiver, filter)

Не забудьте вызвать unregisterReceiver() в onDestroy().