Junior
Какво е BroadcastReceiver в Android?
sobes.tech AI
Отговор от AI
Това е компонент, който реагира на системни или потребителски широковещателни съобщения. Той няма потребителски интерфейс и е предназначен за изпълнение на фонови операции в отговор на определени събития.
Основни характеристики:
- Реагира на намерения (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, "Получено е персонализирано действие!", Toast.LENGTH_SHORT).show();
}
}
}