Какие знаешь методы проверки завершения корутины

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

Ответ

В Kotlin есть несколько способов проверки завершения корутины:

  1. isActive - проверяет, активна ли корутина (не отменена и не завершена)
if (coroutineContext.isActive) {
    // корутина ещё работает
}
  1. Job.join() - приостанавливает вызывающую корутину до завершения целевой
val job = launch { 
    // работа корутины
}
job.join() // ждём завершения
  1. Job.isCompleted - возвращает Boolean, завершена ли корутина
if (job.isCompleted) {
    // обработка завершения
}
  1. Deferred.await() - для корутин с результатом (async/await)
val deferred = async { computeSomething() }
val result = deferred.await() // ждём результат
  1. invokeOnCompletion - колбэк при завершении
job.invokeOnCompletion { cause ->
    cause?.let { 
        // обработка ошибки 
    }
}