Sobes.tech
Junior

Mi az a BroadcastReceiver az Androidban?

sobes.tech MI

Válasz az MI-től

Ez egy olyan összetevő, amely rendszer- vagy felhasználói broadcast üzenetekre reagál. Nincs felhasználói felülete, és háttérműveletek végrehajtására szolgál bizonyos eseményekre válaszul.

Fő jellemzők:

  • Reagál szándékokra (Intents) meghatározott művelettel (action).
  • Rövid életű összetevő, az onReceive() metódusa rövid idő alatt fut.
  • Nem alkalmas hosszú műveletekre. Ha hosszabb munka szükséges, az onReceive()-ből Service-t kell indítani.
  • Statikusan a manifestben vagy dinamikusan a kódban regisztrálható.

Használati példák:

  • Hálózati állapotváltozásokra való reagálás (android.net.conn.CONNECTIVITY_CHANGE).
  • Rendszerindításra való reagálás (android.intent.action.BOOT_COMPLETED).
  • Bejövő SMS-ek feldolgozása.
  • Egyéb komponensek vagy más alkalmazások által küldött egyedi üzenetek fogadása.

A regisztráció a manifestben:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" hogy más alkalmazások is küldhessenek intenteket
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

A regisztráció a kódban:

// Activity vagy Service-ben
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// Az onDestroy() vagy onStop() során - fontos a regisztráció törlése!
unregisterReceiver(receiver);

A BroadcastReceiver osztály:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Itt hajtódik végre a kód az Intent fogadásakor
        // Például:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Egyedi művelet fogadva!", Toast.LENGTH_SHORT).show();
        }
    }
}