Junior — Middle
Kā noteikt savu kontekstu ViewModelScope Android?
sobes.tech AI
Atbilde no AI
Android, ViewModelScope pēc noklusējuma izmanto kontekstu ar Dispatchers.Main dispečerī, kas ir ērti darbam ar UI. Lai definētu savu kontekstu ViewModelScope, vari izveidot savu CoroutineScope ar nepieciešamo CoroutineContext un izmantot to vietā standarta.
Piemēram, vari izveidot paplašinājumu ViewModel, kas izmantos pielāgotu kontekstu:
class CustomViewModel : ViewModel() {
private val customScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
fun doWork() {
customScope.launch {
// Šeit kods tiek izpildīts Dispatchers.IO
}
}
override fun onCleared() {
super.onCleared()
customScope.cancel() // Atceļ korutinas, kad ViewModel tiek iznīcināts
}
}
Lai vietā viewModelScope.launch {} lietotu customScope.launch {} ar vēlamo kontekstu.
Ja vēlaties mainīt kontekstu iekš viewModelScope, varat izmantot withContext:
viewModelScope.launch {
withContext(Dispatchers.IO) {
// Darbs IO
}
}
Pilnīgai kontrolei ir labāk izveidot savu CoroutineScope ViewModelā.