Назад к вопросам
Junior
119
questionbank
Что такое BroadcastReceiver в Android?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Это компонент, который реагирует на системные или пользовательские широковещательные сообщения (broadcasts). Он не имеет пользовательского интерфейса и предназначен для выполнения фоновых операций в ответ на определенные события.
Основные характеристики:
- Реагирует на намерения (Intents) с определенным действием (action).
- Короткоживущий компонент, его метод
onReceive()выполняется в течение короткого периода. - Не предназначен для долгих операций. Если требуется длительная работа, следует запускать Service из
onReceive(). - Может быть зарегистрирован статически в манифесте или динамически в коде.
Примеры использования:
- Реагирование на изменение состояния сети (
android.net.conn.CONNECTIVITY_CHANGE). - Реагирование на загрузку системы (
android.intent.action.BOOT_COMPLETED). - Обработка входящих SMS.
- Получение пользовательских сообщений, отправленных другими компонентами приложения или другими приложениями.
Регистрация в манифесте:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" чтобы другие приложения могли отправлять intents
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Регистрация в коде:
// В Activity или Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// В onDestroy() или onStop() - важно отменить регистрацию!
unregisterReceiver(receiver);
Класс BroadcastReceiver:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Здесь выполняется код при получении Intent
// Например:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Received custom action!", Toast.LENGTH_SHORT).show();
}
}
}