Junior
Kas yra BroadcastReceiver Android?
sobes.tech AI
Atsakymas iš AI
Tai komponentas, kuris reaguoja į sisteminius arba naudotojo platinamus pranešimus (broadcasts). Jis neturi naudotojo sąsajos ir skirtas vykdyti foninius veiksmus tam tikrų įvykių metu.
Pagrindinės savybės:
- reaguoja į tikslus (Intents) su tam tikru veiksmu (action)
- trumpalaikis komponentas, jo
onReceive()metodas vykdomas trumpą laiką - nėra skirtas ilgalaikiams veiksmams, jei reikia ilgalaikio darbo, reikia paleisti Service iš
onReceive() - gali būti registruotas statiniu būdu manifeste arba dinamiškai kode
Naudojimo pavyzdžiai:
- reaguoti į tinklo būsenos pokyčius (
android.net.conn.CONNECTIVITY_CHANGE) - reaguoti į sistemos įkrovimą (
android.intent.action.BOOT_COMPLETED) - apdoroti įeinančias SMS žinutes
- gauti naudotojo pranešimus, siunčiamus kitų komponentų ar kitų programėlių
Registracija manifeste:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" kad kitos programėlės galėtų siųsti intents
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Registracija kode:
// Activity arba Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// onDestroy() arba onStop() - svarbu atšaukti registraciją!
unregisterReceiver(receiver);
BroadcastReceiver klasė:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Čia vykdomas kodas, kai gaunamas Intent
// Pavyzdžiui:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Gauta naudotojo veiksmo žinutė!", Toast.LENGTH_SHORT).show();
}
}
}