EloyGM
  • Apps
  • Noticias
  • Artículos
  • Sobre mí
  • Contacto

Corrutinas y Kotlin Flow: Dominando la programación asíncrona

Por qué los callbacks y RxJava son cosa del pasado en Android

12 de febrero de 2026

1. El Infierno de los Callbacks

Cualquier programador Android veterano recuerda los oscuros días de AsyncTask (descanse en paz) y el infame Callback Hell. Hacer tres llamadas de red consecutivas donde cada una dependía del resultado de la anterior requería anidar interfaces dentro de interfaces, creando un código ilegible, propenso a errores y extremadamente frágil ante cambios de requerimientos.

Aunque RxJava vino a salvar la situación introduciendo los Streams Reactivos, su monstruosa y empinada curva de aprendizaje (con cientos de operadores confusos como flatMap vs concatMap) lo hacía intratable para los desarrolladores Junior.

2. La magia de las Corrutinas (Coroutines)

Las corrutinas de Kotlin no son más que hilos ligeros (lightweight threads). Mientras que un hilo real del sistema operativo cuesta muchísima memoria RAM reservada y cambios de contexto, puedes lanzar 100,000 corrutinas simultáneamente en un teléfono Android de gama baja y ni siquiera se inmutará.

La verdadera magia de las corrutinas reside en la palabra clave suspend. Una función suspendible puede "pausar" su ejecución a la mitad, liberar el hilo en el que corría para que otra tarea lo use, y "reanudarse" horas después exactamente por donde iba, justo cuando la descarga de red termine, sin bloquear jamás el hilo principal (Main/UI Thread).


viewModelScope.launch {
    // Código secuencial legible, como si fuera síncrono
    val user = api.getUser() // Suspende el hilo en background
    val avatar = database.getAvatar(user.id) // Suspende
    
    // Al volver, estamos de nuevo en el Main Thread para pintar
    _uiState.value = UiState.Success(user, avatar)
}
                    

3. Y entonces llegó Kotlin Flow

Las corrutinas son perfectas para operaciones de "un solo tiro" (One-Shot requests): pides un dato y te llega. Pero, ¿qué pasa si necesitas observar una tabla de base de datos local que cambia perpetuamente (como la batería restante del móvil detectada por Detedroid)?

Aquí entra Kotlin Flow. Flow es a las Corrutinas lo que RxJava era a los Threads. Es un flujo asíncrono de múltiples valores emitidos a lo largo del tiempo (Cold Stream). Cuando usamos Room Database y devolvemos un Flow<List<User>>, el sistema automáticamente detectará cada UPDATE o INSERT en el SQLite y empujará un nuevo flujo hacia la UI sin que tengamos que hacer absolutamente nada.

4. StateFlow y SharedFlow: El pegamento de la UI

Para la arquitectura moderna MVVM con Compose, StateFlow (un tipo de flujo caliente que siempre tiene un valor por defecto) se ha convertido en el rey indiscutible para representar el estado de la pantalla. Supera a LiveData en absolutamente todo: no necesita Android Context, opera bajo los Dispatchers de Corrutinas para cálculos intensos y se integra nativamente en Compose con collectAsState().

5. Cancelación Cooperativa

El mayor dolor de cabeza en desarrollo móvil son los Memory Leaks (Pérdidas de memoria) por peticiones de red que continúan vivas después de que el usuario haya cerrado la pantalla. Las corrutinas resuelven esto elegantemente mediante Structured Concurrency. Si usas viewModelScope, cuando el usuario presiona "Atrás" y el ViewModel muere, todas las millones de corrutinas, descargas, conexiones de websockets y flows "hijas" vinculadas a ese scope son canceladas automática e instantáneamente, salvando la CPU y RAM del dispositivo de forma prístina.

Esta es la tecnología que convierte a Kotlin en un lenguaje de programación de primerísimo nivel para entornos asíncronos en 2026.

EloyGM

Desarrollador Android indie

Apps

Noticias

Artículos

Sobre mí

Contacto

Privacidad

Términos

Legal

Email

© 2026 EloyGM