Sobes.tech
Junior — Middle

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.