Sobes.tech
Junior — Middle

Kaip nustatyti savo kontekstą ViewModelScope Android?

sobes.tech AI

Atsakymas iš AI

Android'e ViewModelScope pagal nutylėjimą naudoja kontekstą su Dispatchers.Main siųstuvu, kas patogu dirbant su UI. Norint apibrėžti savo kontekstą ViewModelScope, galite sukurti savo CoroutineScope su reikalingu CoroutineContext ir naudoti jį vietoje standartinio.

Pavyzdžiui, galite sukurti išplėtimą ViewModel, kuris naudos pritaikytą kontekstą:

class CustomViewModel : ViewModel() {
    private val customScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)

    fun doWork() {
        customScope.launch {
            // Čia kodas vykdomas Dispatchers.IO
        }
    }

    override fun onCleared() {
        super.onCleared()
        customScope.cancel() // Atšaukia korutinas, kai sunaikinamas ViewModel
    }
}

Vietoj viewModelScope.launch {} naudokite customScope.launch {} su norimu kontekstu.

Jei norite pakeisti kontekstą viewModelScope, galite naudoti withContext:

viewModelScope.launch {
    withContext(Dispatchers.IO) {
        // Darbas IO
    }
}

Taip pat, pilnai kontrolei geriau kurti savo CoroutineScope ViewModel viduje.