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-ում։