Sobes.tech
Junior — Middle

Ako získať výsledok z volania služby?

sobes.tech AI

Odpoveď od AI

V Androide je rezultat volania služby možné získať niekoľkými spôsobmi, v závislosti od typu služby:

  1. Bound Service (viazaná služba): klient sa pripojí ku službe cez ServiceConnection a získa objekt služby, prostredníctvom ktorého môže volať metódy a priamo získať výsledok.
// Príklad pripojenia ku službe
private val connection = object : ServiceConnection {
    override fun onServiceConnected(name: ComponentName?, binder: IBinder?) {
        val service = (binder as MyService.LocalBinder).getService()
        val result = service.getResult()
        // Použitie výsledku
    }
    override fun onServiceDisconnected(name: ComponentName?) {}
}

// Pripojenie ku službe
bindService(Intent(this, MyService::class.java), connection, Context.BIND_AUTO_CREATE)
  1. IntentService alebo bežná služba s asynchrónnou prácou: výsledok možno získať cez BroadcastReceiver, ktorý počúva správy od služby.

  2. Messenger alebo AIDL: pre medziprocesovú komunikáciu možno použiť Messenger alebo AIDL, na odosielanie správ a prijímanie odpovedí.

Takže spôsob získania výsledku závisí od typu služby a architektúry aplikácie.