Sobes.tech
Junior

Šta je BroadcastReceiver u Androidu?

sobes.tech АИ

Одговор од АИ

Ovo je komponenta koja reaguje na sistemske ili korisničke broadcast poruke. Nema korisnički interfejs i namenjena je za izvršavanje pozadinskih operacija kao odgovor na određene događaje.

Glavne karakteristike:

  • Reaguje na Intent-ove (Intents) sa određenom akcijom (action).
  • Komponenta kratkog trajanja, njen metod onReceive() se izvršava u kratkom periodu.
  • Nije namenjena za duge operacije. Ako je potrebna dugotrajna radnja, treba pokrenuti Service iz onReceive().
  • Može biti registrovana statički u manifestu ili dinamički u kodu.

Primeri upotrebe:

  • Reagovanje na promene stanja mreže (android.net.conn.CONNECTIVITY_CHANGE).
  • Reagovanje na pokretanje sistema (android.intent.action.BOOT_COMPLETED).
  • Obrada dolaznih SMS poruka.
  • Primanje korisničkih poruka koje šalju drugi komponenti aplikacije ili druge aplikacije.

Registracija u manifestu:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" da bi druge aplikacije mogle slati intentove
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Registracija u kodu:

// U Activity ili Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// U onDestroy() ili onStop() - važno je odjaviti registraciju!
unregisterReceiver(receiver);

Klasa BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Ovde se izvršava kod pri primanju Intent-a
        // Na primer:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Prijavljena prilagođena akcija!", Toast.LENGTH_SHORT).show();
        }
    }
}