Зачем нужен Job в корутинах

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

Ответ

Job в корутинах представляет собой управляемый жизненный циклом фоновый таск. Он позволяет:

  1. Контролировать выполнение корутины (отмена, ожидание завершения)
  2. Строить иерархии корутин через родительские/дочерние связи
  3. Отслеживать состояние (активна, завершена, отменена)

Пример:

val job = CoroutineScope(Dispatchers.IO).launch {
    // Работа в корутине
}

// Отмена корутины
job.cancel() 

Ключевые особенности:

  • Job можно отменить, что остановит все дочерние корутины
  • Поддерживает structured concurrency
  • Позволяет ждать завершения через join()