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