Sobes.tech
Junior — Middle

Ինչպե՞ս կարող եք սահմանել ձեր սեփական կոնտեքստը ViewModelScope- ի համար Android-ում։

sobes.tech AI

Պատասխան AI-ից

Android-ում ViewModelScope նախնական օգտագործում է կոնտեքստ Dispatchers.Main դիսպետչերով, ինչը հարմար է UI-ի հետ աշխատելու համար։ Որպեսզի սահմանեք ձեր սեփական կոնտեքստը ViewModelScope-ի համար, կարող եք ստեղծել ձեր CoroutineScope-ը անհրաժեշտ CoroutineContext-ով և օգտագործել այն ստանդարտի փոխարեն։

Օրինակ, կարող եք ստեղծել 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-ը ViewModel-ում։