Conceptos y la implementación de Jetpack Compose
En esencia, la producción de estado es la aplicación incremental de cambios en el estado de la IU. El estado siempre existe y cambia como resultado de los eventos. Las diferencias entre los eventos y el estado se resumen en la siguiente tabla:
Eventos |
Estado |
Es transitoria, impredecible y existe durante un período limitado |
Siempre existe |
Las entradas de producción del estado |
Resultado de la producción del estado |
Es el producto de la IU o de otras fuentes |
La consume la IU |
Los eventos pueden provenir de las siguientes fuentes:
- Usuarios: Cuando interactúan con la IU de la app.
- Otras fuentes de cambio de estado: APIs que presentan datos de app desde la IU, el dominio o capas de datos, como eventos de tiempo de espera de la barra de notificaciones, casos de uso o repositorios, respectivamente.
APIs de producción de estado
Hay dos APIs principales que se usan en la producción de estados según la etapa de la canalización en la que te encuentres:
Etapa de la canalización |
API |
Entrada |
Debes usar APIs asíncronas para realizar trabajos fuera del subproceso de IU y mantener libre el bloqueo de la IU. Por ejemplo, corrutinas o flujos en Kotlin, y RxJava o devoluciones de llamada en el lenguaje de programación Java. |
Salida |
Debes usar las APIs de retención de datos observables para invalidar y volver a representar la IU cuando cambia el estado. Por ejemplo, StateFlow o LiveData. Los contenedores de datos observables garantizan que la IU siempre tenga un estado de IU para mostrar en la pantalla. |
De las dos opciones, la elección de una API asíncrona para la entrada tiene una mayor influencia en la naturaleza de la canalización de producción que el estado que la elección de la API observable para la salida. Esto se debe a que las entradas dictan el tipo de procesamiento que se puede aplicar a la canalización.
Organización de canalizaciones de producción de estado
En las siguientes secciones, se abordan las técnicas de producción de estado más adecuadas para varias entradas y las APIs de salida que coinciden. Cada canalización de producción de estado es una combinación de entradas y salidas, y debe tener las siguientes características:
- Ser compatible con el ciclo de vida: En el caso de que la IU no esté visible o activa, la canalización de producción del estado no debería consumir ningún recurso, a menos que se solicite de manera explícita.
- Ser fácil de consumir: La IU debe poder renderizar con facilidad el estado de IU producido. Las consideraciones para la salida de la canalización de producción de estado variarán según las diferentes APIs de View, como el sistema de View o Jetpack Compose.
Tipos de salida en canalizaciones de producción de estado
La elección de la API de salida para el estado de la IU y la naturaleza de su presentación dependen en gran medida de la API que tu app usa para procesar la IU. En las apps para Android, puedes elegir usar Views o Jetpack Compose. Se debe considerar lo siguiente:
- La lectura del estado de forma consciente del ciclo de vida
- Si el estado debe exponerse en uno o varios campos del contenedor de estado
En la siguiente tabla, se resume qué APIs usar para la canalización de producción del estado cuando se usa el framework de Views:
Entrada |
Resultado |
APIs de operación única |
|
APIs de transmisión |
|
APIs de transmisión y operación única |
|