> Какие виды скоупов существуют в Kotlin Coroutines (Kotlin, Android)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Radium Finance

Стек: Kotlin, Android

> Пример ответа

В Kotlin Coroutines существует несколько основных видов скоупов (Scope), которые определяют жизненный цикл корутин:

  1. GlobalScope - глобальный скоуп, живёт всё время работы приложения. Используется редко, так как корутины в нём не привязаны к жизненному циклу компонентов и могут приводить к утечкам памяти.

  2. CoroutineScope - пользовательский скоуп, создаваемый вручную. Позволяет контролировать отмену всех запущенных в нём корутин. Пример: val scope = CoroutineScope(Dispatchers.Main).

  3. viewModelScope - встроенный скоуп для ViewModel в Android. Автоматически отменяется при очистке ViewModel, что предотвращает утечки.

  4. lifecycleScope - скоуп для Activity/Fragment, привязанный к жизненному циклу. Отменяется при уничтожении компонента (например, при вызове onDestroy).

  5. runBlocking - блокирующий скоуп, который приостанавливает текущий поток до завершения корутины. Используется в основном в тестах или на границе между блокирующим и асинхронным кодом.

  6. supervisorScope - скоуп, в котором ошибка в одной корутине не отменяет другие. Полезен для параллельных независимых задач.

  7. actorScope и produceScope - специализированные скоупы для каналов и акторов (реже используются в повседневной разработке).

Выбор скоупа зависит от контекста: для UI-компонентов предпочтительны viewModelScope и lifecycleScope, для фоновых задач - пользовательский CoroutineScope с явным управлением отменой.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью