Sobes.tech
Junior — Middle

Androidda ViewModelScope uchun o'z kontekstingizni qanday aniqlash mumkin?

sobes.tech AI

AIdan javob

Androidda 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.