Ответ
Статическая регистрация объявляется в AndroidManifest.xml и работает даже когда приложение не запущено (до Android 8.0). После Android 8.0 ограничена системными событиями.
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Динамическая регистрация выполняется в коде через registerReceiver() и работает только при активном процессе приложения. Требует явной отмены через unregisterReceiver().
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
// Обработка события
}
}
registerReceiver(receiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
Ключевые отличия:
- Жизненный цикл (статика — вне приложения, динамика — только при работе)
- Гибкость (динамика позволяет регистрировать/отменять по необходимости)
- Ограничения (на новых версиях Android статика работает только для системных событий)