Ответ
Scope в корутинах определяет жизненный цикл корутины и управляет её отменой. Он предоставляет методы для запуска корутин (launch, async) и гарантирует отмену всех дочерних корутин при завершении.
Основные scope в Kotlin:
- GlobalScope – живет всё время работы приложения (не рекомендуется для обычных задач).
- CoroutineScope – создается явно и привязан к жизненному циклу (например,
viewModelScopeв ViewModel). - SupervisorScope – позволяет дочерним корутинам завершаться независимо (если одна упала, другие продолжают работу).
Пример:
viewModelScope.launch {
val result = async { fetchData() }.await()
updateUI(result)
}
Здесь viewModelScope автоматически отменит корутину при очистке ViewModel.