Sobes.tech
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();
        }
    }
}