Какие знаешь способы отмены корутины

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

Ответ

В Kotlin есть несколько способов отмены корутины:

  1. Job.cancel() – явный вызов отмены:
val job = launch {
    // работа корутины
}
job.cancel()
  1. Автоматическая отмена при завершении родительской корутины (через иерархию Job).

  2. withTimeout() – отмена по таймауту:

withTimeout(1000L) {
    // корутина отменится через 1 сек
}
  1. Проверка isActive вручную:
launch {
    while(isActive) {
        // проверяем флаг активности
    }
}

Важно: отмена корутины не прерывает её мгновенно – нужно обрабатывать CancellationException и освобождать ресурсы. Также можно использовать try-finally для cleanup-кода.