Sobes.tech
Junior — Middle

BroadcastReceiver аркылуу Fragment жана Service ортосунда маалымат алмашуу кандай жүргүзүлөт?

sobes.tech AI

AIден жооп

Androidда BroadcastReceiver аркылуу Fragment жана Service ортосунда маалымат алмашуу төмөндөгүчө жүргүзүлөт:

  1. Service sendBroadcast(Intent) же LocalBroadcastManager колдонуп кеңири таратуу билдирүүсүн жиберет.
  2. Fragment белгилүү аракеттерди (action) угуп турган BroadcastReceiver катталат.
  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 ортосунда маалыматтарды асинхрон жана алыс байланышта алмашууга мүмкүндүк берет.