Junior
Kas ir BroadcastReceiver Android?
sobes.tech AI
Atbilde no AI
Šis komponents reaģē uz sistēmas vai lietotāja izplatītajām ziņojumiem (broadcasts). Tam nav lietotāja saskarnes un tas ir paredzēts fonu operāciju veikšanai noteiktu notikumu laikā.
Galvenās īpašības:
- reaģē uz mērķiem (Intents) ar noteiktu darbību (action)
- īslaicīgs komponents, tā
onReceive()metode tiek izpildīta īsu laiku - nav paredzēts ilgstošiem darbiem, ja nepieciešams ilgstošs darbs, jāpalaiž Service no
onReceive() - var tikt reģistrēts statiski manifestā vai dinamiski kodā
Piemēri izmantošanai:
- reaģēt uz tīkla stāvokļa izmaiņām (
android.net.conn.CONNECTIVITY_CHANGE) - reaģēt uz sistēmas ielādi (
android.intent.action.BOOT_COMPLETED) - apstrādāt ienākošās SMS ziņas
- saņemt lietotāja ziņojumus, ko sūta citi komponenti vai citas lietotnes
Reģistrācija manifestā:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" lai citas lietotnes varētu sūtīt intents
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Reģistrācija kodā:
// Activity vai Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// onDestroy() vai onStop() - svarīgi atcelt reģistrāciju!
unregisterReceiver(receiver);
BroadcastReceiver klase:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Šeit tiek izpildīts kods, saņemot Intent
// Piemēram:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Saņemta īpaša darbība!", Toast.LENGTH_SHORT).show();
}
}
}