Sobes.tech
Junior — Middle

Чӣ гуна иваз кардани маълумот байни Fragment ва Service тавассути истифодаи BroadcastReceiver анҷом дода мешавад?

sobes.tech AI

Ҷавоб аз AI

Алмасу маълумот байни Fragment ва Service тавассути BroadcastReceiver дар Android ба тариқи зерин сурат мегирад:

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