Sobes.tech
Junior — Middle

Ինչպե՞ս է կատարվում տեղեկատվության փոխանակումը Fragment և Service միջև BroadcastReceiver-ի օգտագործմամբ։

sobes.tech AI

Պատասխան AI-ից

Android-ում BroadcastReceiver-ի միջոցով Fragment և Service միջև տեղեկատվության փոխանակումը տեղի է ունենում հետևյալ կերպ՝

  1. Service ուղարկում է լայնարձակ հաղորդագրություն sendBroadcast(Intent) կամ LocalBroadcastManager օգտագործելով:
  2. Fragment գրանցում է BroadcastReceiver, որը լսում է որոշ գործողություններ (action) ինտենտում:
  3. Երբ Service ուղարկում է broadcast, գրանցված 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-ներին փոխանակել տվյալները ասինխրոն և թույլ կապով։