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