Back to questions
Junior — Middle
58
Каким образом осуществляется обмен информацией между Fragment и Service через использование BroadcastReceiver?
Answer from AI
sobes.tech AI
Обмен информацией между Fragment и Service через BroadcastReceiver в Android происходит следующим образом:
- Service отправляет широковещательное сообщение (broadcast) с помощью
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 обмениваться данными асинхронно и слабо связанно.