Junior — Middle
Чӣ гуна метавон контексти худро барои ViewModelScope дар Android муайян кард?
sobes.tech AI
Ҷавоб аз AI
Дар Android, ViewModelScope ба дефолт истифода мебарад контексти бо dispatcher 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 созед.