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

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

Ответ

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

  1. launch – запускает корутину без возврата результата (fire-and-forget):
GlobalScope.launch {
    // асинхронный код
}
  1. async – запускает корутину с возможностью получения результата через await():
val deferred = GlobalScope.async {
    // вычисления
    return@async результат
}
val result = deferred.await()
  1. runBlocking – блокирует текущий поток до завершения корутины (используется в тестах или main()):
runBlocking {
    // блокирующий вызов
}
  1. coroutineScope – создает новую область видимости для корутин без блокировки текущего потока:
suspend fun foo() = coroutineScope {
    launch { /* ... */ }
}

Важно: GlobalScope не рекомендуется для production кода – лучше использовать явные CoroutineScope с привязкой к жизненному циклу (например viewModelScope в Android).