> Как управлять жизненным циклом корутины в Kotlin (Kotlin, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: IBS
Стек: Kotlin, Android
> Пример ответа
Управление жизненным циклом корутины в Kotlin/Android строится на привязке области выполнения к компонентам UI (Activity, Fragment, ViewModel) с помощью CoroutineScope. Основные подходы:
-
Использование
viewModelScope(в ViewModel) - корутины автоматически отменяются при уничтожении ViewModel. Пример:class MyViewModel : ViewModel() { fun loadData() { viewModelScope.launch { // запрос, который отменится при очистке ViewModel } } } -
Использование
lifecycleScope(в Activity/Fragment) - корутины привязаны к жизненному циклу компонента. Для отмены при паузе используйтеLifecycle.State.STARTED:lifecycleScope.launchWhenStarted { // выполняется, пока компонент в состоянии STARTED или RESUMED } -
Создание собственного
CoroutineScopeс привязкой к жизненному циклу черезonDestroy:class MyActivity : AppCompatActivity() { private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob()) override fun onDestroy() { super.onDestroy() scope.cancel() // отмена всех корутин } } -
Использование
withContextиasync/awaitдля управления порядком выполнения и отменой вложенных корутин.
Ключевой принцип: всегда отменяйте корутины, когда компонент больше не нужен, чтобы избежать утечек памяти и выполнения фоновых задач после уничтожения UI.
> Похожие задачи по mobile
Как работает компиляция в Kotlin Multiplatform
Какой диспетчер использовать для загрузки ресурса с сети в Kotlin корутинах
Что такое оператор to в Kotlin и как он используется
Какой поток используется по умолчанию для вычислений в Kotlin Coroutines?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью