Sobes.tech
Junior — Middle

Kā noteikt savu kontekstu ViewModelScope Android?

sobes.tech AI

Atbilde no AI

Android, ViewModelScope pēc noklusējuma izmanto kontekstu ar Dispatchers.Main dispečerī, kas ir ērti darbam ar UI. Lai definētu savu kontekstu ViewModelScope, vari izveidot savu CoroutineScope ar nepieciešamo CoroutineContext un izmantot to vietā standarta.

Piemēram, vari izveidot paplašinājumu ViewModel, kas izmantos pielāgotu kontekstu:

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

    fun doWork() {
        customScope.launch {
            // Šeit kods tiek izpildīts Dispatchers.IO
        }
    }

    override fun onCleared() {
        super.onCleared()
        customScope.cancel() // Atceļ korutinas, kad ViewModel tiek iznīcināts
    }
}

Lai vietā viewModelScope.launch {} lietotu customScope.launch {} ar vēlamo kontekstu.

Ja vēlaties mainīt kontekstu iekš viewModelScope, varat izmantot withContext:

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

Pilnīgai kontrolei ir labāk izveidot savu CoroutineScope ViewModelā.