> Какие виды скоупов существуют в Kotlin Coroutines (Kotlin, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Radium Finance
Стек: Kotlin, Android
> Пример ответа
В Kotlin Coroutines существует несколько основных видов скоупов (Scope), которые определяют жизненный цикл корутин:
-
GlobalScope - глобальный скоуп, живёт всё время работы приложения. Используется редко, так как корутины в нём не привязаны к жизненному циклу компонентов и могут приводить к утечкам памяти.
-
CoroutineScope - пользовательский скоуп, создаваемый вручную. Позволяет контролировать отмену всех запущенных в нём корутин. Пример:
val scope = CoroutineScope(Dispatchers.Main). -
viewModelScope - встроенный скоуп для ViewModel в Android. Автоматически отменяется при очистке ViewModel, что предотвращает утечки.
-
lifecycleScope - скоуп для Activity/Fragment, привязанный к жизненному циклу. Отменяется при уничтожении компонента (например, при вызове
onDestroy). -
runBlocking - блокирующий скоуп, который приостанавливает текущий поток до завершения корутины. Используется в основном в тестах или на границе между блокирующим и асинхронным кодом.
-
supervisorScope - скоуп, в котором ошибка в одной корутине не отменяет другие. Полезен для параллельных независимых задач.
-
actorScope и produceScope - специализированные скоупы для каналов и акторов (реже используются в повседневной разработке).
Выбор скоупа зависит от контекста: для UI-компонентов предпочтительны viewModelScope и lifecycleScope, для фоновых задач - пользовательский CoroutineScope с явным управлением отменой.
> Похожие задачи по mobile
Есть ли проблемы при передаче массива вместо списка в дата класс Kotlin
Можно ли создать Singleton с параметризованным конструктором в Kotlin
Как реализовать debounce для поиска с корутинами в Kotlin
Какие нововведения в Kotlin и Android за последние полгода запомнились
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью