Может ли Service быть одновременно onBind и started

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

Ответ

Да, Service может одновременно быть started (через startService()) и bound (через bindService()). В этом случае сервис будет работать, пока есть хотя бы один из этих компонентов:

  • Пока есть активные клиенты (bound) ИЛИ
  • Пока был вызван startService() (даже без stopSelf() или stopService())

Пример:

// Запуск сервиса (started)
startService(Intent(this, MyService::class.java))

// Привязка сервиса (bound)
bindService(
    Intent(this, MyService::class.java),
    connection,
    Context.BIND_AUTO_CREATE
)

Сервис уничтожится только после:

  1. Все клиенты отвяжутся (unbindService())
  2. Будет вызван stopService()/stopSelf() (если был started)