Выбор ответа Junior Многопоточность и WorkManager обновлено

В каком потоке работает Service

Вопрос

В каком потоке выполняется onStartCommand обычного Service?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В главном потоке приложения. Service это компонент без UI, но не поток: его колбэки вызываются на главном потоке.

Варианты ответа

  1. В отдельном фоновом потоке, созданном системой
  2. В потоке Dispatchers.IO
  3. В главном потоке приложенияправильный ответ
  4. В отдельном процессе

Разбор

Service это компонент без UI, но не поток: его колбэки вызываются на главном потоке. Тяжёлую работу внутри нужно переносить в корутины или потоки, иначе будет ANR. Отдельный процесс появляется, только если указать android:process в манифесте. Устаревший IntentService создавал рабочий поток сам.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.