Junior — Middle
Androidда ViewModelScope үчүн өз контекстиңизди кантип аныктоо керек?
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 түзүү жакшыраак.