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 las corrutinas y los 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 principal de la IU de Paging es collectAsLazyPagingItems(). Expone elementos paginados como una lista de datos que los componentes de diseño diferido de Compose pueden consumir fácilmente, como LazyColumn y LazyRow.
Agrega la biblioteca androidx.paging:paging-compose para usar APIs compatibles con Compose que permitan que la IU reaccione automáticamente a las cargas, actualizaciones y errores de datos sin necesidad de adaptadores ni lógica de diferenciación. 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