Android-də ViewModelScope üçün öz kontekstinizi necə təyin etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Android-də, ViewModelScope varsayılan olaraq Dispatchers.Main ilə işləyən konteksti istifadə edir, bu da UI ilə işləmək üçün əlverişlidir. ViewModelScope üçün öz kontekstinizi təyin etmək istəyirsinizsə, lazım olan CoroutineContext ilə öz CoroutineScope-unuzu yarada və onu standart yerinə istifadə edə bilərsiniz.
Məsələn, ViewModel üçün xüsusi kontekstdən istifadə edən genişləndirmə yarada bilərsiniz:
class CustomViewModel : ViewModel() {
private val customScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
fun doWork() {
customScope.launch {
// Burada kod Dispatchers.IO-də icra olunur
}
}
override fun onCleared() {
super.onCleared()
customScope.cancel() // ViewModel ləğv ediləndə korutinləri ləğv et
}
}
Beləliklə, viewModelScope.launch {} yerinə customScope.launch {} istifadə edin və lazım olan konteksti təmin edin.
Əgər viewModelScope daxilində konteksti dəyişdirmək istəyirsinizsə, withContext istifadə edə bilərsiniz:
viewModelScope.launch {
withContext(Dispatchers.IO) {
// IO-da işləmə
}
}
Lakin, kontekst üzərində tam nəzarət üçün, öz CoroutineScope-unuzu ViewModel-də yaratmaq daha yaxşıdır.