0Pricing
Android Academy · Lección

Observar datos con Flow

Reaccione a los cambios de la base de datos de forma reactiva

Observar datos con Flow es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.

Lecturas reactivas de la base de datos

En lugar de consultar una sola vez, Room puede devolver un Flow que emite un nuevo valor cada vez que cambian los datos subyacentes. La interfaz se actualiza automáticamente.

Devolver un Flow desde un DAO

Declare el tipo de retorno como Flow<...>. Observe que no es una función suspend.

@Query("SELECT * FROM users ORDER BY name")
fun observeUsers(): Flow<List<User>>

Por qué no usar suspend aquí

Una función suspend devuelve un único resultado y termina. Un Flow es un flujo continuo, por lo que es una función normal que devuelve el objeto de flujo; se recopila a lo largo del tiempo.

Cómo sabe Room cuándo volver a emitir

Room registra las tablas que toca una consulta. Cuando una escritura afecta a esas tablas, Room vuelve a ejecutar la consulta y emite el resultado actualizado a través del Flow. Esto es automático.

Recopilar en una corrutina

Recopile el flow dentro de una corrutina, normalmente en el ViewModel.

viewModelScope.launch {
    dao.observeUsers().collect { users ->
        _uiState.value = UiState(users)
    }
}

Transformar el Flow

Puede transformar el flujo con operadores como map antes de exponerlo.

val names: Flow<List<String>> =
    dao.observeUsers().map { list ->
        list.map { it.name }
    }

Convertirlo en StateFlow

Convierta un flow frío del DAO en un StateFlow caliente para la interfaz mediante stateIn.

val uiState = dao.observeUsers()
    .map { UiState(it) }
    .stateIn(
        viewModelScope,
        SharingStarted.WhileSubscribed(5000),
        UiState()
    )

Recopilar en Compose

La pantalla recopila ese estado teniendo en cuenta el ciclo de vida, exactamente como aprendió anteriormente.

@Composable
fun UsersScreen(vm: UserViewModel) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
    UserList(state.users)
}

La cadena reactiva completa

En conjunto:

  • Room emite cuando cambian los datos.
  • ViewModel transforma los datos en estado de la interfaz mediante stateIn.
  • Compose recopila los datos con collectAsStateWithLifecycle.

Escriba en la base de datos desde cualquier lugar y la pantalla se actualizará por sí sola.

Fuente única de verdad

Este patrón convierte la base de datos en la fuente única de verdad. La interfaz nunca conserva copias obsoletas; siempre refleja lo que está almacenado realmente.

Las escrituras activan actualizaciones

Cualquier inserción, actualización o eliminación en una tabla supervisada vuelve a emitir el flow, por lo que no tiene que actualizar manualmente la lista después de un cambio.

suspend fun addUser(u: User) = dao.insert(u)
// observeUsers() flow re-emits automatically

Comprobación rápida

Compruebe cuánto entiende la observación de datos con Flow.

Repaso

Ha aprendido lo siguiente:

  • Los métodos del DAO que devuelven Flow vuelven a emitir cuando cambian los datos.
  • Son funciones normales (no suspend) que devuelven un flujo.
  • Use stateIn + collectAsStateWithLifecycle para actualizar la interfaz de forma reactiva.
  • La base de datos se convierte en la fuente única de verdad.

Preguntas frecuentes

¿La lección «Observar datos con Flow» es gratis?

Sí — el texto completo de «Observar datos con Flow» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Observar datos con Flow»?

Reaccione a los cambios de la base de datos de forma reactiva Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Android Academy?

No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Observar datos con Flow»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Android Academy?

Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Entidades y DAOs
  2. La clase de base de datos Room
  3. Consultas y relaciones
  4. Observar datos con Flow
← Volver a Android Academy