Sobes.tech
Junior — Middle

¿Cómo implementar la realización de solicitudes de red utilizando ViewModel en una aplicación?

sobes.tech AI

Respuesta de la IA

Para realizar solicitudes de red en una aplicación Android utilizando ViewModel, generalmente se emplea la arquitectura MVVM y bibliotecas como Retrofit y Coroutines.

Idea principal:

  • ViewModel contiene la lógica de carga de datos y gestiona el estado de la interfaz de usuario.
  • Las solicitudes de red se realizan de forma asíncrona para no bloquear el hilo principal.
  • Los resultados de la solicitud se transmiten a la vista mediante LiveData o StateFlow.

Ejemplo usando Kotlin Coroutines y 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) {
                // Manejo de errores
            }
        }
    }
}

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

Aquí, viewModelScope cancelará automáticamente la coroutine al destruir el ViewModel, lo que previene fugas de memoria. Este enfoque asegura una clara separación de responsabilidades y facilita las pruebas.