Descripción general de la biblioteca de Paging Parte de Android Jetpack.
La biblioteca de Paging te ayuda a cargar y mostrar páginas de datos de un conjunto de datos más grande desde el almacenamiento local o por una red. Este enfoque permite que tu app use el ancho de banda de la red y los recursos del sistema de manera más eficiente. Los componentes de la biblioteca de Paging están diseñados para adaptarse a la arquitectura de apps para Android recomendada, integrarse con facilidad a otros componentes de Jetpack y proporcionar compatibilidad de primer nivel con Kotlin.
Beneficios de usar la biblioteca de Paging
La biblioteca de Paging incluye las siguientes funciones:
- Almacenamiento en caché en memoria para los datos paginados, que garantiza que tu app use los recursos del sistema de manera eficiente mientras trabaja con datos paginados
- Anulación integrada de duplicación de solicitudes, que ayuda a garantizar que la app use el ancho de banda de la red y los recursos del sistema de manera eficiente
- Compatibilidad de primer nivel con corrutinas y flujos de Kotlin
- Compatibilidad integrada para el manejo de errores, incluidas funciones de actualización y reintento
Configuración
Si quieres importar componentes de Paging a tu app para Android, agrega las siguientes dependencias al archivo build.gradle de tu app:
Kotlin
dependencies { val paging_version = "3.4.2" implementation("androidx.paging:paging-common:$paging_version") // Jetpack Compose integration implementation("androidx.paging:paging-compose:$paging_version") }
Groovy
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
Arquitectura de biblioteca
Los componentes de la biblioteca de Paging operan en tres capas de tu app:
- La capa del repositorio
- La capa
ViewModel - La capa de la IU
En esta sección, se describen los componentes de la biblioteca de Paging que operan en cada capa, así como la manera en que funcionan juntos para cargar y mostrar datos paginados.
Capa del repositorio
El componente principal de la biblioteca de paginación en la capa del repositorio es PagingSource. Cada objeto PagingSource define una fuente de datos y la manera en que recuperará los datos de esa fuente. Un objeto PagingSource puede cargar datos desde cualquier fuente única, incluidas fuentes de red y bases de datos locales.
Otro componente de la biblioteca de Paging que puedes usar es RemoteMediator. Un objeto RemoteMediator controla la paginación de una fuente de datos en capas, como una fuente de datos de red con una caché de base de datos local.
Capa ViewModel
El componente Pager proporciona una API pública para crear instancias de PagingData que se exponen en flujos reactivos, basadas en un objeto PagingSource y en un objeto de configuración PagingConfig.
El componente que conecta la capa ViewModel con la IU es PagingData. Un objeto PagingData es un contenedor del resumen de los datos paginados. Busca un objeto PagingSource y almacena el resultado.
Capa de la IU
La API de IU principal de Paging es collectAsLazyPagingItems(). Expone los elementos paginados como una lista de datos que los componentes de diseño diferido de Compose, como LazyColumn y LazyRow, pueden consumir con facilidad.
Agrega la biblioteca androidx.paging:paging-compose para usar las APIs compatibles con Compose que permiten que la IU reaccione automáticamente a las cargas de datos, las actualizaciones y los errores sin necesidad de adaptadores ni lógica de diferencias. Usa la función de extensión collectAsLazyPagingItems() en un Flow<PagingData> para pasar el LazyPagingItems que se muestra a items() en un LazyColumn.
@Composable fun MessageList(pager: Pager<Int, Message>) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } }
Para obtener más información, consulta Conjuntos de datos grandes (paginación).
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Cómo cargar y mostrar datos paginados
- Cómo migrar a Paging 3
- Página de la red y la base de datos