Junior — Middle
Kako odrediti sopstveni kontekst za ViewModelScope u Androidu?
sobes.tech АИ
Одговор од АИ
U Androidu, ViewModelScope po default koristi kontekst sa dispatcherom Dispatchers.Main, što je zgodno za rad sa UI-jem. Da biste definisali sopstveni kontekst za ViewModelScope, možete napraviti svoj CoroutineScope sa potrebnim CoroutineContext-om i koristiti ga umesto standardnog.
Na primer, možete napraviti ekstenziju za ViewModel koja koristi prilagođeni kontekst:
class CustomViewModel : ViewModel() {
private val customScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
fun doWork() {
customScope.launch {
// Kod se izvršava u Dispatchers.IO
}
}
override fun onCleared() {
super.onCleared()
customScope.cancel() // Otkažite korutine pri uništenju ViewModel-a
}
}
Umesto viewModelScope.launch {} koristite customScope.launch {} sa željenim kontekstom.
Ako želite da promenite kontekst unutar viewModelScope, možete koristiti withContext:
viewModelScope.launch {
withContext(Dispatchers.IO) {
// Rad u IO
}
}
Za potpunu kontrolu nad kontekstom, bolje je da napravite sopstveni CoroutineScope u ViewModel-u.