Ответ
Bound Service используется для взаимодействия между компонентами приложения (например, Activity и Service) через интерфейс IPC (межпроцессного взаимодействия). Он работает, пока есть хотя бы один клиент, и уничтожается, когда все клиенты отключаются.
Пример:
class MyBoundService : Service() {
private val binder = LocalBinder()
inner class LocalBinder : Binder() {
fun getService(): MyBoundService = this@MyBoundService
}
override fun onBind(intent: Intent): IBinder = binder
}
// В Activity:
private lateinit var boundService: MyBoundService
private var isBound = false
private val connection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
val binder = service as MyBoundService.LocalBinder
boundService = binder.getService()
isBound = true
}
override fun onServiceDisconnected(name: ComponentName?) {
isBound = false
}
}
Используется для долгосрочных операций, требующих прямого взаимодействия (например, музыкальный плеер).