Sobes.tech
Junior

Co je to BroadcastReceiver v Androidu?

sobes.tech AI

Odpověď od AI

Toto je komponenta, která reaguje na systémové nebo uživatelské broadcast zprávy. Nemá uživatelské rozhraní a je určena k provádění operací na pozadí jako reakce na určité události.

Hlavní vlastnosti:

  • Reaguje na záměry (Intents) s určitým akcí (action).
  • Krátkodobá komponenta, její metoda onReceive() se vykonává po krátkou dobu.
  • Není určena pro dlouhé operace. Pokud je potřeba dlouhodobá práce, je třeba spustit Service z onReceive().
  • Může být registrována staticky v manifestu nebo dynamicky v kódu.

Příklady použití:

  • Reakce na změny stavu sítě (android.net.conn.CONNECTIVITY_CHANGE).
  • Reakce na spuštění systému (android.intent.action.BOOT_COMPLETED).
  • Zpracování příchozích SMS.
  • Přijímání vlastních zpráv odeslaných jinými komponentami aplikace nebo jinými aplikacemi.

Registrace v manifestu:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" aby jiné aplikace mohly posílat záměry
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Registrace v kódu:

// V Activity nebo Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// V onDestroy() nebo onStop() - je důležité zrušit registraci!
unregisterReceiver(receiver);

Třída BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Zde se vykonává kód při přijetí Intent
        // Například:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Vlastní akce přijata!", Toast.LENGTH_SHORT).show();
        }
    }
}