На каком thread’е стартует Service

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

Ответ

Сервис стартует в главном потоке (UI-потоке) приложения. Это означает, что если в onStartCommand() или onCreate() выполнять долгие операции, это приведёт к ANR. Для фоновых задач нужно либо использовать IntentService (устарел), либо явно запускать отдельный поток/Coroutine/WorkManager.

Пример с IntentService:

class MyService : IntentService("MyService") {
    override fun onHandleIntent(intent: Intent?) {
        // Работает в фоновом потоке
    }
}

Для современных решений лучше использовать WorkManager или CoroutineScope с Dispatchers.IO.