Junior
Čo je BroadcastReceiver v Android?
sobes.tech AI
Odpoveď od AI
Toto je komponent, ktorá reaguje na systémové alebo používateľské broadcast správy. Nemá používateľské rozhranie a je určený na vykonávanie operácií na pozadí ako reakcia na určité udalosti.
Hlavné vlastnosti:
- Reaguje na Intent (Intents) s určitým akciou (action).
- Krátkodobá komponenta, jej metóda
onReceive()sa vykonáva počas krátkeho obdobia. - Nie je určený na dlhé operácie. Ak je potrebná dlhodobá práca, je potrebné spustiť Service z
onReceive(). - Môže byť registrovaný staticky v manifeste alebo dynamicky v kóde.
Príklady použitia:
- Reakcia na zmeny stavu siete (
android.net.conn.CONNECTIVITY_CHANGE). - Reakcia na spustenie systému (
android.intent.action.BOOT_COMPLETED). - Spracovanie prichádzajúcich SMS správ.
- Prijímanie vlastných správ odoslaných inými komponentmi aplikácie alebo inými aplikáciami.
Registrácia v manifeste:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" aby iné aplikácie mohli posielať intents
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Registrácia v kóde:
// V Activity alebo Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// V onDestroy() alebo onStop() - je dôležité odregistrovať!
unregisterReceiver(receiver);
Trieda BroadcastReceiver:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Tu sa vykonáva kód pri prijatí Intent
// Napríklad:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Prijatá vlastná akcia!", Toast.LENGTH_SHORT).show();
}
}
}