Ответ
Нет, не обязательно. BroadcastReceiver можно зарегистрировать двумя способами:
- Статически - в AndroidManifest.xml (получает события даже когда приложение не запущено)
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
- Динамически - через Context.registerReceiver() (работает только когда приложение активно)
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// handle broadcast
}
}
registerReceiver(receiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
Выбор зависит от задачи. Для системных событий (BOOT_COMPLETED) нужна статическая регистрация. Для кастомных событий или временной подписки лучше динамическая, которую нужно не забывать отменять в onDestroy().