Что такое bindService

«Что такое bindService» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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)