Middle
68
questionbank

Что такое CoroutineScope в Kotlin и как он используется в разработке под Android?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

CoroutinesScope определяет контекст и жизненный цикл корутины. Он управляет группой дочерних корутин и отменяет их при отмене самого скоупа.

В Android CoroutineScope используется для привязки жизненного цикла корутин к жизненному циклу компонента (Activity, Fragment, ViewModel).

Существует несколько типов скоупов:

  • GlobalScope: Живет на протяжении всего приложения. Его использование не рекомендуется из-за сложности отмены и потенциальных утечек памяти.
  • ViewModelScope: Предоставляется KTX библиотекой для ViewModel. Отменяется автоматически, когда ViewModel очищается (onCleared()).
  • LifecycleScope: Предоставляется KTX библиотекой для Activity/Fragment. Привязан к жизненному циклу компонента и отменяется при его уничтожении. Можно запускать корутины в разных состояниях жизненного цикла (lifecycle.coroutineScope.launchWhenCreated, lifecycle.coroutineScope.launchWhenStarted, lifecycle.coroutineScope.launchWhenResumed).
  • Пользовательские скоупы: Можно создать свой CoroutineScope при необходимости.

Пример использования ViewModelScope:

kotlin

Пример использования LifecycleScope:

kotlin

Таблица сравнения скоупов:

ScopeЖизненный циклРекомендуется дляПримечание
GlobalScopeПриложение-Не рекомендуется, утечки памяти
ViewModelScopeViewModel.onCleared()ViewModelАвтоматически отменяется
LifecycleScopeActivity/Fragment onDestory()Activity/FragmentПривязан к жизненному циклу
Custom ScopeОпределяется пользователем-Гибкость