Sobes.tech
Junior — Middle

Πώς πραγματοποιείται η ανταλλαγή πληροφοριών μεταξύ Fragment και Service μέσω της χρήσης BroadcastReceiver;

sobes.tech AI

Απάντηση από AI

Η ανταλλαγή πληροφοριών μεταξύ Fragment και Service μέσω BroadcastReceiver στο Android συμβαίνει ως εξής:

  1. Service στέλνει ένα μήνυμα broadcast χρησιμοποιώντας sendBroadcast(Intent) ή LocalBroadcastManager.
  2. Fragment καταγράφει έναν BroadcastReceiver, ο οποίος ακούει συγκεκριμένες ενέργειες (action) στο intent.
  3. Όταν το 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 να ανταλλάσσουν δεδομένα ασύγχρονα και με χαμηλό βαθμό συσχέτισης.