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:
- Bound Service (viazaná služba): klient sa pripojí ku službe cez
ServiceConnectiona 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)
-
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. -
Messenger alebo AIDL: pre medziprocesovú komunikáciu možno použiť
Messengeralebo 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.