Можно ли отменить запущенную Job

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

Ответ

Да, можно отменить запущенную Job в Kotlin Coroutines. Для этого нужно вызвать метод cancel() на объекте Job или на CoroutineScope.

Пример:

val job = launch {
    // Долгая операция
    delay(1000)
    println("Job completed")
}

// Отмена через 500 мс
delay(500)
job.cancel() // Job будет отменена

При отмене:

  1. Job переходит в состояние Cancelling
  2. Выбрасывается CancellationException
  3. Можно обработать отмену в блоке finally или через try-catch

Для отмены всех Job в Scope:

coroutineScope.cancel() // Отменяет все дочерние Job