CoroutineScopeCoroutineScope — это интерфейс, который определяет жизненный цикл и контекст для корутин. Он хранит CoroutineContext, который содержит информацию о диспетчере, джобе и других настройках корутин.
CoroutineScope обеспечивает структурированную конкурентность — каждая корутина, запущенная внутри скоупа, становится дочерней по отношению к этому скоупу. Это создаёт иерархию родитель-потомок со следующими гарантиями:
val scope = CoroutineScope(Dispatchers.Main + Job())
scope.launch { /* child coroutine */ }
scope.cancel() // отменяет всех потомков
viewModelScope — связан с жизненным циклом ViewModel в Android; отменяется при очистке ViewModellifecycleScope — связан с жизненным циклом Android Activity или FragmentGlobalScope — не рекомендуется для общего использования, так как существует на протяжении всего времени жизни приложения и может привести к утечкам памятиПравильное использование CoroutineScope предотвращает утечки корутин, гарантируя, что корутины не проживут дольше компонента, которому они принадлежат. Это делает управление ресурсами безопаснее и упрощает понимание кода.
Родительский CoroutineScope автоматически ждёт, пока завершатся все дочерние корутины, прежде чем сам завершится, что гарантирует структурированный параллелизм.
Новый — ещё не проверен сообществом
Вы