Ответ
bindService() — это метод для привязки сервиса к активити или другому компоненту, позволяющий взаимодействовать с ним через интерфейс IBinder. В отличие от startService(), сервис уничтожается, когда все клиенты отвязываются.
Ключевые моменты:
- Требует реализации
ServiceConnectionдля полученияIBinder. - Сервис должен переопределить
onBind(), возвращаяIBinder. - Жизненный цикл привязанного сервиса зависит от клиентов.
Пример:
val serviceIntent = Intent(this, MyService::class.java)
bindService(serviceIntent, object : ServiceConnection {
override fun onServiceConnected(name: ComponentName?, binder: IBinder?) {
val myBinder = binder as MyService.LocalBinder
val service = myBinder.getService()
}
override fun onServiceDisconnected(name: ComponentName?) {}
}, Context.BIND_AUTO_CREATE)