Sobes.tech
Junior — Middle

როგორ განვსაზღვროთ ჩვენი საკუთარი კონტექსტი ViewModelScope-ისთვის Android-ში?

sobes.tech AI

პასუხი AI-სგან

Android-да, ViewModelScope әдепкі боюнча Dispatchers.Main диспетчер менен иштеген контекстти колдонуп турат, бул UI менен иштөө үчүн ыңгайлуу. ViewModelScope үчүн өзүнүн контекстин аныктоо үчүн, керектүү CoroutineContext менен өзүнүн CoroutineScope түзүп, аны стандарттык ордуна колдонсо болот.

Мисалы, ViewModel үчүн өзгөчө контекстти колдонгон кеңейтүүнү түзө аласыз:

class CustomViewModel : ViewModel() {
    private val customScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)

    fun doWork() {
        customScope.launch {
            // Бул жерде код Dispatchers.IOдө иштейт
        }
    }

    override fun onCleared() {
        super.onCleared()
        customScope.cancel() // ViewModel жок кылынганда корутиндерди токтотуу
    }
}

viewModelScope.launch {} ордуна customScope.launch {} колдонуп, керектүү контекстти бериңиз.

Эгер viewModelScope ичинде контекстти өзгөртүүнү кааласаңыз, withContext колдонсоңуз болот:

viewModelScope.launch {
    withContext(Dispatchers.IO) {
        // IOдө иштөө
    }
}

Толук көзөмөл үчүн, өзгөчө CoroutineScope түзүү жакшыраак.