Sobes.tech
Junior

Mis on BroadcastReceiver Androidis?

sobes.tech AI

Vastus AI-lt

See komponent reageerib süsteemi või kasutaja levitatud sõnumitele (broadcasts). Sellel puudub kasutajaliides ning see on mõeldud taustal toimingute täitmiseks teatud sündmuste korral.

Peamised omadused:

  • reageerib eesmärkidele (Intents) kindla tegevusega (action)
  • lühiajaline komponent, tema onReceive() meetod täidetakse lühikese aja jooksul
  • ei ole mõeldud pikaajalisteks operatsioonideks, kui vaja pikka tööd, tuleb käivitada Service onReceive()-st
  • võib olla registreeritud statiliselt manifestis või dünaamiliselt koodis

Kasutusnäited:

  • reageerimine võrgu oleku muutusele (android.net.conn.CONNECTIVITY_CHANGE)
  • reageerimine süsteemi käivitamisele (android.intent.action.BOOT_COMPLETED)
  • sisenevate SMS-ide töötlemine
  • kasutaja sõnumite saamine, mida saadavad teised komponendid või teised rakendused

Registreerimine manifestis:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" et teised rakendused saaksid saata intents
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Registreerimine koodis:

// Activity või Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// onDestroy() või onStop() - oluline on registreerimine tühistada!
unregisterReceiver(receiver);

BroadcastReceiver klass:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Siin täidetakse kood Intent'i saamisel
        // Näiteks:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Kohandatud tegevus saadud!", Toast.LENGTH_SHORT).show();
        }
    }
}