Sobes.tech
Junior — Middle

ViewModel ichida CoroutineScope nima bilan boshqa scope'lar o'rtasidagi farq nima va uni to'g'ri qanday ishlatish kerak?

sobes.tech AI

AIdan javob

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