Назад к вопросам
Junior — Middle
80
Чем отличается CoroutineScope внутри ViewModel по сравнению с другими scope, и как его использовать правильно?
Ответ от нейросети
sobes.tech AI
CoroutineScope внутри ViewModel отличается тем, что его жизненный цикл привязан к жизненному циклу самой ViewModel. Это значит, что все корутины, запущенные в этом scope, автоматически отменяются, когда ViewModel уничтожается, что помогает избежать утечек памяти и выполнения лишних задач.
В Android для этого обычно используют viewModelScope из библиотеки androidx.lifecycle:
class MyViewModel : ViewModel() {
fun loadData() {
viewModelScope.launch {
// Выполнение асинхронной задачи
val data = repository.getData()
// Обновление UI через LiveData или StateFlow
}
}
}
Правильное использование viewModelScope позволяет безопасно запускать асинхронные операции, не заботясь об их отмене при уничтожении ViewModel. В отличие от других scope, например, GlobalScope, viewModelScope обеспечивает управление жизненным циклом и предотвращает утечки.