Sobes.tech
Junior — Middle

Hoe implementeer je het uitvoeren van netwerkverzoeken met behulp van ViewModel in een applicatie?

sobes.tech AI

Antwoord van AI

Om netwerkverzoeken uit te voeren in een Android-app met behulp van ViewModel, wordt meestal de MVVM-architectuur en bibliotheken zoals Retrofit en Coroutines gebruikt.

Belangrijkste idee:

  • ViewModel bevat de logica voor het laden van gegevens en beheert de UI-status.
  • Netwerkverzoeken worden asynchroon uitgevoerd om de hoofdthread niet te blokkeren.
  • De resultaten van het verzoek worden via LiveData of StateFlow naar de View gestuurd.

Voorbeeld met Kotlin Coroutines en Retrofit:

class MyViewModel(private val repository: MyRepository) : ViewModel() {
    private val _data = MutableLiveData<ResultType>()
    val data: LiveData<ResultType> = _data

    fun fetchData() {
        viewModelScope.launch {
            try {
                val response = repository.getDataFromNetwork()
                _data.value = response
            } catch (e: Exception) {
                // Foutafhandeling
            }
        }
    }
}

class MyRepository(private val apiService: ApiService) {
    suspend fun getDataFromNetwork(): ResultType {
        return apiService.fetchData()
    }
}

Hier zorgt viewModelScope ervoor dat de coroutine automatisch wordt geannuleerd bij vernietiging van het ViewModel, wat geheugenlekken voorkomt. Deze aanpak zorgt voor een duidelijke scheiding van verantwoordelijkheden en vergemakkelijkt testen.