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:
- Service odošle broadcast správu pomocou
sendBroadcast(Intent)aleboLocalBroadcastManager. - Fragment zaregistruje
BroadcastReceiver, ktorý počúva určité akcie (action) v intente. - Keď Service odošle broadcast, zaregistrovaný
BroadcastReceiverv 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.