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