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 la red. Este enfoque permite que tu app use tanto el ancho de banda de la red como 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, lo cual garantiza que tu app haga un uso eficiente del ancho de banda de la red y de los recursos del sistema
  • Adaptadores RecyclerView configurables que solicitan datos automáticamente a medida que el usuario se desplaza hacia el final de los datos cargados
  • Compatibilidad de primer nivel con corrutinas y Flow de Kotlin, además de LiveData y RxJava
  • Compatibilidad integrada para el manejo de errores, incluidas funciones de actualización y reintento

Envía comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Configuración

Si quieres importar componentes de Paging a tu app para Android, agrega las siguientes dependencias al archivo build.gradle de tu app:

Groovy

dependencies {
  def paging_version = "3.1.0"

  implementation "androidx.paging:paging-runtime:$paging_version"

  // alternatively - without Android dependencies for tests
  testImplementation "androidx.paging:paging-common:$paging_version"

  // optional - RxJava2 support
  implementation "androidx.paging:paging-rxjava2:$paging_version"

  // optional - RxJava3 support
  implementation "androidx.paging:paging-rxjava3:$paging_version"

  // optional - Guava ListenableFuture support
  implementation "androidx.paging:paging-guava:$paging_version"

  // optional - Jetpack Compose integration
  implementation "androidx.paging:paging-compose:1.0.0-alpha14"
}

Kotlin

dependencies {
  val paging_version = "3.1.0"

  implementation("androidx.paging:paging-runtime:$paging_version")

  // alternatively - without Android dependencies for tests
  testImplementation("androidx.paging:paging-common:$paging_version")

  // optional - RxJava2 support
  implementation("androidx.paging:paging-rxjava2:$paging_version")

  // optional - RxJava3 support
  implementation("androidx.paging:paging-rxjava3:$paging_version")

  // optional - Guava ListenableFuture support
  implementation("androidx.paging:paging-guava:$paging_version")

  // optional - Jetpack Compose integration
  implementation("androidx.paging:paging-compose:1.0.0-alpha14")
}

Arquitectura de la biblioteca

La biblioteca de Paging se integra directamente en la arquitectura de apps para Android recomendada. Los componentes de la biblioteca operan en tres capas de tu app:

  • La capa del repositorio
  • La capa ViewModel
  • La capa de la IU
Flujos de datos paginados desde los componentes de PagingSource o RemoteMediator en la capa del repositorio hacia el componente de Pager en la capa ViewModel.
    Luego, el componente de Pager expone un flujo de PagingData al PagingDataAdapter en la capa de la IU.
Figura 1: ejemplo de cómo la biblioteca de Paging se adapta a la arquitectura de tu app

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

El componente principal de la biblioteca de Paging en la capa de la IU es PagingDataAdapter, un adaptador RecyclerView que controla datos paginados.

Como alternativa, puedes usar el componente AsyncPagingDataDiffer incluido a fin de compilar tu propio adaptador personalizado.

Recursos adicionales

Para obtener más información sobre la biblioteca de Paging, consulta los siguientes recursos adicionales:

Codelabs

Ejemplos