viewModelScopeviewModelScope — это CoroutineScope extension property, доступный в каждом ViewModel и предоставляемый библиотекой androidx.lifecycle:lifecycle-viewmodel-ktx.
Он даёт каждому ViewModel свой собственный выделенный coroutine scope, чтобы ты мог запускать фоновую работу напрямую, привязанную к жизненному циклу этого ViewModel — без необходимости вручную создавать scope или управлять им.
Ключевое преимущество — автоматическая отмена. Когда ViewModel очищается (то есть связанный с ним UI окончательно уничтожается), все корутины, запущенные внутри viewModelScope, автоматически отменяются.
Это означает:
onCleared()class MyViewModel : ViewModel() {
fun fetchData() {
viewModelScope.launch {
val result = repository.getData()
_uiState.value = result
}
}
}
viewModelScope по умолчанию использует Dispatchers.Main.immediate, что делает его безопасным для прямого обновления UI state. Это упрощает управление жизненным циклом корутин, гарантируя, что ни одна корутина не переживёт свой ViewModel.
viewModelScope автоматически отменяет все запущенные корутины при очистке ViewModel, предотвращая утечки корутин и ненужную фоновую работу после уничтожения UI.
Новый — ещё не проверен сообществом
Вы