Как работает корутина

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

Ответ

Корутины в Kotlin — это легковесные потоки для асинхронных операций. Они работают на уровне языка, не блокируя поток, а приостанавливая выполнение (suspend).

Основные принципы:

  • Suspend-функции — помечены suspend и могут быть вызваны только из корутин или других suspend-функций.
  • Scope (CoroutineScope) — управляет жизненным циклом корутин (например, viewModelScope, lifecycleScope).
  • Dispatcher — определяет, на каком потоке выполняется корутина (Dispatchers.Main, Dispatchers.IO).

Пример:

viewModelScope.launch(Dispatchers.IO) {  
    val data = fetchData() // suspend-функция  
    withContext(Dispatchers.Main) {  
        updateUI(data) // Обновляем UI в главном потоке  
    }  
}  

Преимущества:

  • Эффективнее потоков (меньше накладных расходов).
  • Удобное управление отменой и обработкой ошибок.