Junior
Cos'è BroadcastReceiver in Android?
sobes.tech AI
Risposta dell'AI
Questo è un componente che risponde ai messaggi broadcast di sistema o dell'utente. Non ha un'interfaccia utente ed è progettato per eseguire operazioni in background in risposta a eventi specifici.
Caratteristiche principali:
- Risponde alle intenzioni (Intents) con un'azione (action) specifica.
- Componente di breve durata, il suo metodo
onReceive()viene eseguito in un breve periodo. - Non destinato a operazioni lunghe. Se è richiesta un'operazione prolungata, si dovrebbe avviare un Service da
onReceive(). - Può essere registrato staticamente nel manifesto o dinamicamente nel codice.
Esempi di utilizzo:
- Rispondere a cambiamenti nello stato della rete (
android.net.conn.CONNECTIVITY_CHANGE). - Rispondere al caricamento del sistema (
android.intent.action.BOOT_COMPLETED). - Gestire SMS in arrivo.
- Ricevere messaggi personalizzati inviati da altri componenti dell'applicazione o da altre applicazioni.
Registrazione nel manifesto:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" per permettere ad altre applicazioni di inviare intents
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Registrazione nel codice:
// In un'Activity o Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// In onDestroy() o onStop() - è importante annullare la registrazione!
unregisterReceiver(receiver);
Classe BroadcastReceiver:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Qui viene eseguito il codice al ricevimento dell'Intent
// Per esempio:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Azione personalizzata ricevuta!", Toast.LENGTH_SHORT).show();
}
}
}