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.