Sobes.tech
Junior — Middle

Comment implémenter l'exécution des requêtes réseau en utilisant ViewModel dans une application?

sobes.tech IA

Réponse de l'IA

Pour effectuer des requêtes réseau dans une application Android en utilisant ViewModel, on emploie généralement l'architecture MVVM et des bibliothèques telles que Retrofit et Coroutines.

Idée principale:

  • ViewModel contient la logique de chargement des données et gère l'état de l'UI.
  • Les requêtes réseau sont effectuées de manière asynchrone pour ne pas bloquer le thread principal.
  • Les résultats de la requête sont transmis à la vue via LiveData ou StateFlow.

Exemple avec Kotlin Coroutines et 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) {
                // Gestion des erreurs
            }
        }
    }
}

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

Ici, viewModelScope annulera automatiquement la coroutine lors de la destruction du ViewModel, ce qui évite les fuites de mémoire. Cette approche garantit une séparation claire des responsabilités et facilite les tests.