Junior — Middle
Come implementare l'esecuzione di richieste di rete utilizzando ViewModel in un'applicazione?
sobes.tech AI
Risposta dell'AI
Per eseguire richieste di rete in un'app Android utilizzando ViewModel, si impiega generalmente l'architettura MVVM e librerie come Retrofit e Coroutines.
Idea principale:
- Il ViewModel contiene la logica di caricamento dei dati e gestisce lo stato dell'UI.
- Le richieste di rete vengono eseguite in modo asincrono per non bloccare il thread principale.
- I risultati della richiesta vengono trasmessi alla vista tramite LiveData o StateFlow.
Esempio con Kotlin Coroutines e 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) {
// Gestione degli errori
}
}
}
}
class MyRepository(private val apiService: ApiService) {
suspend fun getDataFromNetwork(): ResultType {
return apiService.fetchData()
}
}
Qui, viewModelScope cancellerà automaticamente la coroutine alla distruzione del ViewModel, prevenendo perdite di memoria. Questo approccio garantisce una chiara separazione delle responsabilità e facilita i test.