Junior — Middle
107
Worin besteht der Unterschied zwischen CoroutineScope innerhalb eines ViewModels im Vergleich zu anderen Scopes, und wie verwendet man ihn richtig?
Antwort von AI
sobes.tech KI
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 обеспечивает управление жизненным циклом и предотвращает утечки.