Ejecución de peticiones con Retrofit y corrutinas¶
1. Corrutinas y red en Android¶
Las peticiones de red no pueden ejecutarse en el hilo principal.
Retrofit se integra con corrutinas usando funciones suspend.
Esto permite: - Código secuencial y legible - Gestión automática de hilos - Cancelación ligada al ciclo de vida
2. Structured concurrency¶
En Android, las corrutinas deben lanzarse desde un scope controlado:
- viewModelScope
- lifecycleScope
Esto evita: - Fugas de memoria - Peticiones activas cuando la pantalla ya no existe
3. Flujo típico de ejecución¶
- El usuario realiza una acción (buscar, pulsar botón)
- La UI llama al ViewModel
- El ViewModel lanza una corrutina
- El Repository llama a Retrofit
- Retrofit devuelve el resultado
- La UI se actualiza
Este flujo garantiza separación de responsabilidades.
4. Repository como intermediario¶
El Repository: - Centraliza el acceso a datos - Decide si los datos vienen de red, cache o BD - Simplifica el ViewModel
Ejemplo conceptual:
class Repository {
suspend fun loadData(): List<String> {
// llamada Retrofit
}
}
5. Estados de UI¶
Una buena práctica es representar el estado de la pantalla: - Cargando - Éxito - Error
Esto permite: - Mostrar feedback al usuario - Evitar pantallas “congeladas” - Mejor experiencia de uso
6. Errores habituales en prácticas¶
- Llamar a Retrofit desde la Activity
- No controlar excepciones
- Mezclar lógica de red y UI
- Bloquear el hilo principal
Todos estos puntos son muy penalizables en evaluación.