Sobes.tech
Junior

Ce este un BroadcastReceiver în Android?

sobes.tech AI

Răspuns de la AI

Acesta este un component care răspunde mesajelor broadcast de sistem sau de utilizator. Nu are o interfață de utilizator și este destinat pentru a executa operații în fundal ca răspuns la evenimente specifice.

Caracteristici principale:

  • Răspunde la intenții (Intents) cu o acțiune (action) specifică.
  • Component de scurtă durată, metoda onReceive() fiind executată pe o perioadă scurtă.
  • Nu este destinat pentru operații lungi. Dacă este necesară o muncă de durată, se pornește un Service din onReceive().
  • Poate fi înregistrat static în manifest sau dinamic în cod.

Exemple de utilizare:

  • Reacție la schimbări ale stării rețelei (android.net.conn.CONNECTIVITY_CHANGE).
  • Reacție la pornirea sistemului (android.intent.action.BOOT_COMPLETED).
  • Procesarea SMS-urilor primite.
  • Primirea mesajelor personalizate trimise de alte componente ale aplicației sau alte aplicații.

Înregistrare în manifest:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" pentru ca alte aplicații să poată trimite intents
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Înregistrare în cod:

// Într-o Activity sau Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// În onDestroy() sau onStop() - este important să dezînregistrăm!
unregisterReceiver(receiver);

Clasa BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Aici se execută codul la primirea Intent-ului
        // De exemplu:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Acțiune personalizată primită!", Toast.LENGTH_SHORT).show();
        }
    }
}