Ответ
Корутины в 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 в главном потоке
}
}
Преимущества:
- Эффективнее потоков (меньше накладных расходов).
- Удобное управление отменой и обработкой ошибок.