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