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