Sobes.tech
Назад к вопросам
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 обеспечивает управление жизненным циклом и предотвращает утечки.