Ответ
Coroutines — это легковесные потоки, позволяющие писать асинхронный код последовательно, без колбэков. Они приостанавливают выполнение, не блокируя поток, и возобновляют работу при готовности результата.
Ключевые особенности:
- Работают в рамках одного потока (не создают новых Thread)
- Управляются диспетчерами (Dispatchers.IO, Main, Default)
- Поддерживают отмену (cancellation)
- Меньше накладных расходов, чем у потоков
viewModelScope.launch(Dispatchers.IO) {
val data = repository.fetchData() // suspend-функция
withContext(Dispatchers.Main) {
updateUI(data) // Обновляем UI в главном потоке
}
}
Используются для:
- Асинхронных операций
- Работы с БД
- Сетевых запросов
- Параллельных задач (async/await)
Видео-ответы
▶
▶
▶
▶
▶
▶
▶