Назад к вопросам
Junior — Middle
72
Какие отличия существуют между динамическим и статическим механизмом Broadcast Receiver в Android?
Компании, где спрашивали
ПСБ
Ответ от нейросети
sobes.tech AI
В Android существуют два способа регистрации Broadcast Receiver: статический и динамический.
Статический Broadcast Receiver:
- Регистрируется в манифесте приложения (
AndroidManifest.xml). - Срабатывает даже если приложение не запущено.
- Используется для получения широковещательных сообщений от системы или других приложений.
- Минус: начиная с Android 8.0 (API 26) многие системные широковещательные сообщения нельзя принимать статически, чтобы экономить ресурсы.
Динамический Broadcast Receiver:
- Регистрируется программно в коде с помощью
registerReceiver(). - Активен только пока приложение или компонент (например, Activity) жив.
- Позволяет более гибко управлять временем жизни ресивера.
- Можно регистрировать и отменять регистрацию в нужные моменты.
Итого:
- Статический ресивер — всегда активен, регистрируется в манифесте.
- Динамический — активен только во время работы приложения, регистрируется в коде.
Пример динамической регистрации:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// обработка
}
};
@Override
protected void onStart() {
super.onStart();
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(receiver, filter);
}
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(receiver);
}