Назад к вопросам
Middle
76
questionbank
Какие виды BroadcastReceiver вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
Ordered Broadcast:
- Широковещательная рассылка доставляется получателям последовательно, один за другим.
- Каждый получатель может обработать или изменить результат рассылки, а также прервать ее, чтобы она не дошла до следующих получателей.
- Порядок доставки определяется приоритетом получателя (
android:priorityв манифесте).
-
Normal Broadcast:
- Самый распространенный тип.
- Широковещательное сообщение отправляется сразу всем заинтересованным получателям, зарегистрированным как объявленными (в манифесте), так и динамически (через
Context.registerReceiver()). - Порядок получения сообщений не гарантируется.
- Получатель не может остановить распространение сообщения.
-
Local Broadcast:
- Используется для обмена сообщениями только в пределах одного приложения.
- Реализован классом
LocalBroadcastManager. - Более эффективен и безопасен, так как сообщения не выходят за пределы приложения и не затрагивают другие приложения в системе.
- Не требует объявления получателей в манифесте.
- Уменьшает нагрузку на систему по сравнению с глобальными рассылками.
// Пример регистрации динамического BroadcastReceiver
BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Логика обработки сообщения
}
};
IntentFilter filter = new IntentFilter("MY_ACTION");
registerReceiver(myReceiver, filter);
// Пример отправки Normal Broadcast
Intent broadcastIntent = new Intent("MY_ACTION");
sendBroadcast(broadcastIntent);
// Пример использования LocalBroadcastManager
// Получение экземпляра
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
// Регистрация
localBroadcastManager.registerReceiver(myReceiver, filter);
// Отправка
localBroadcastManager.sendBroadcast(broadcastIntent);
// Пример отправки Ordered Broadcast
// sendOrderedBroadcast(orderedBroadcastIntent, null); // Можно указать permission