Sobes.tech
Junior — Middle

Ako sa vykonáva výmena informácií medzi Fragment a Service pomocou BroadcastReceiver?

sobes.tech AI

Odpoveď od AI

Výmena informácií medzi Fragment a Service cez BroadcastReceiver v Android sa deje nasledovne:

  1. Service odošle broadcast správu pomocou sendBroadcast(Intent) alebo LocalBroadcastManager.
  2. Fragment zaregistruje BroadcastReceiver, ktorý počúva určité akcie (action) v intente.
  3. Keď Service odošle broadcast, zaregistrovaný BroadcastReceiver v Fragmente dostane Intent a spracuje údaje.

Príklad:

// V Service
val intent = Intent("com.example.ACTION_DATA")
intent.putExtra("data", "Ahoj z Service")
sendBroadcast(intent)

// V Fragment
private val receiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        val data = intent?.getStringExtra("data")
        // Spracovanie prijatých údajov
    }
}

override fun onStart() {
    super.onStart()
    val filter = IntentFilter("com.example.ACTION_DATA")
    requireContext().registerReceiver(receiver, filter)
}

override fun onStop() {
    super.onStop()
    requireContext().unregisterReceiver(receiver)
}

Tento prístup umožňuje Service a Fragment asynchrónne a s nízkym prepojením vymieňať údaje.