Sobes.tech
Back to questions
Junior — Middle
58

Каким образом осуществляется обмен информацией между Fragment и Service через использование BroadcastReceiver?

Answer from AI

sobes.tech AI

Обмен информацией между Fragment и Service через BroadcastReceiver в Android происходит следующим образом:

  1. Service отправляет широковещательное сообщение (broadcast) с помощью sendBroadcast(Intent) или LocalBroadcastManager.
  2. Fragment регистрирует BroadcastReceiver, который слушает определённые действия (action) в интенте.
  3. Когда 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 обмениваться данными асинхронно и слабо связанно.