Можно ли привязаться к запущенному Bound Service

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

Ответ

Да, можно привязаться к уже запущенному Bound Service, если он был запущен через startService() или другим компонентом. Для этого используется bindService(). Важно учитывать жизненный цикл сервиса — он не будет уничтожен, пока есть активные привязки или сервис был запущен через startService().

Пример:

val connection = object : ServiceConnection {
    override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
        // Получаем интерфейс для взаимодействия
    }
    override fun onServiceDisconnected(name: ComponentName?) {
        // Обработка отключения
    }
}

bindService(
    Intent(this, MyService::class.java),
    connection,
    Context.BIND_AUTO_CREATE
)