Junior — Middle
Πώς πραγματοποιείται η ανταλλαγή πληροφοριών μεταξύ Fragment και Service μέσω της χρήσης BroadcastReceiver;
sobes.tech AI
Απάντηση από AI
Η ανταλλαγή πληροφοριών μεταξύ Fragment και Service μέσω BroadcastReceiver στο Android συμβαίνει ως εξής:
- Service στέλνει ένα μήνυμα broadcast χρησιμοποιώντας
sendBroadcast(Intent)ήLocalBroadcastManager. - Fragment καταγράφει έναν
BroadcastReceiver, ο οποίος ακούει συγκεκριμένες ενέργειες (action) στο intent. - Όταν το Service στέλνει το broadcast, ο
BroadcastReceiverπου έχει καταγραφεί στο Fragment λαμβάνει το Intent και επεξεργάζεται τα δεδομένα.
Παράδειγμα:
// Στο Service
val intent = Intent("com.example.ACTION_DATA")
intent.putExtra("data", "Γειά από το Service")
sendBroadcast(intent)
// Στο Fragment
private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val data = intent?.getStringExtra("data")
// Επεξεργασία των ληφθέντων δεδομένων
}
}
override fun onStart() {
super.onStart()
val filter = IntentFilter("com.example.ACTION_DATA")
requireContext().registerReceiver(receiver, filter)
}
override fun onStop() {
super.onStop()
requireContext().unregisterReceiver(receiver)
}
Αυτή η προσέγγιση επιτρέπει στο Service και το Fragment να ανταλλάσσουν δεδομένα ασύγχρονα και με χαμηλό βαθμό συσχέτισης.