Junior — Middle
Как се осъществява обменът на информация между Fragment и Service чрез използването на BroadcastReceiver?
sobes.tech AI
Отговор от AI
Обменът на информация между Fragment и Service чрез BroadcastReceiver в Android се осъществява по следния начин:
- Service изпраща широковещателно съобщение с помощта на
sendBroadcast(Intent)илиLocalBroadcastManager. - Fragment регистрира
BroadcastReceiver, който слуша определени действия (action) в интента. - Когато Service изпрати broadcast, регистрираният в Fragment
BroadcastReceiverполучава 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 да обменят данни асинхронно и слабо свързано.