Ответ
Корутина состоит из нескольких ключевых компонентов:
- Контекст (CoroutineContext) – содержит элементы, такие как Job, Dispatcher, исключения и др.
- Job – управляет жизненным циклом корутины (запуск, отмена).
- Dispatcher – определяет, на каком потоке выполняется корутина (Main, IO, Default).
- Scope (CoroutineScope) – ограничивает время жизни корутины (например,
viewModelScope).
Пример:
viewModelScope.launch(Dispatchers.IO) { // Scope + Dispatcher
val result = fetchData() // Job внутри
withContext(Dispatchers.Main) { // Смена контекста
updateUI(result)
}
}