Junior
Czym jest BroadcastReceiver w Androidzie?
sobes.tech AI
Odpowiedź od AI
To jest komponent, który reaguje na systemowe lub użytkownika broadcasty. Nie posiada interfejsu użytkownika i jest przeznaczony do wykonywania operacji w tle w odpowiedzi na określone zdarzenia.
Główne cechy:
- Reaguje na intencje (Intents) z określoną akcją (action).
- Krótkotrwały komponent, jego metoda
onReceive()jest wykonywana przez krótki czas. - Nie jest przeznaczony do długotrwałych operacji. Jeśli wymagana jest dłuższa praca, należy uruchomić Service z
onReceive(). - Może być zarejestrowany statycznie w manifeście lub dynamicznie w kodzie.
Przykłady użycia:
- Reagowanie na zmiany stanu sieci (
android.net.conn.CONNECTIVITY_CHANGE). - Reagowanie na uruchomienie systemu (
android.intent.action.BOOT_COMPLETED). - Obsługa przychodzących SMS-ów.
- Odbieranie wiadomości wysłanych przez inne komponenty aplikacji lub inne aplikacje.
Rejestracja w manifeście:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" aby inne aplikacje mogły wysyłać intents
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Rejestracja w kodzie:
// W Activity lub Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// W onDestroy() lub onStop() - ważne jest odwołanie rejestracji!
unregisterReceiver(receiver);
Klasa BroadcastReceiver:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Kod wykonywany przy otrzymaniu Intent
// Na przykład:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Otrzymano akcję niestandardową!", Toast.LENGTH_SHORT).show();
}
}
}