Panoramica della libreria Paging   Componente di Android Jetpack.

La libreria Paging ti consente di caricare e visualizzare pagine di dati da un set di dati più grande dallo spazio di archiviazione locale o tramite una rete. Questo approccio consente all'app di utilizzare in modo più efficiente sia la larghezza di banda della rete sia le risorse di sistema. I componenti della libreria Paging sono progettati per adattarsi all'architettura dell'app Android consigliata, integrarsi perfettamente con altri componenti di Jetpack e fornire un'assistenza Kotlin di prima classe.

Vantaggi dell'utilizzo della libreria Paging

La libreria Paging include le seguenti funzionalità:

  • Memorizzazione nella cache in memoria per i dati paginati. In questo modo, puoi assicurarti che la tua app utilizzi le risorse di sistema in modo efficiente durante il lavoro con i dati paginati.
  • La deduplica delle richieste integrata, che contribuisce a garantire che la tua app utilizzi in modo efficiente la larghezza di banda della rete e le risorse di sistema.
  • Adattatori configurabili RecyclerView che richiedono automaticamente i dati man mano che l'utente scorre verso la fine degli elementi caricati.
  • Supporto di primo livello per coroutine e flussi Kotlin, nonché per LiveData e RxJava.
  • Supporto integrato per la gestione degli errori, incluse le funzionalità di aggiornamento e riprova.

Fornisci feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Controlla i problemi esistenti per questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni sull'invio di feedback, consulta la documentazione di Issue Tracker.

Configura

Per importare i componenti di Paging nella tua app per Android, aggiungi le seguenti dipendenze al file build.gradle dell'app:

Alla moda

dependencies {
  def paging_version = "3.3.2"

  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:3.3.2"
}

Kotlin

dependencies {
  val paging_version = "3.3.2"

  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:3.3.2")
}

Architettura della libreria

I componenti della libreria Paging operano in tre livelli della tua app:

  • Il livello del repository
  • Il livello ViewModel
  • Il livello dell'interfaccia utente
Un'immagine che mostra i flussi di dati paginati dai componenti PagingSource o RemoteMediator nel livello del repository al componente Pager nel livello ViewModel.
    Il componente Pager espone quindi un flusso di PagingData all'oggetto PagingDataAdapter nel livello UI.
Figura 1. Un esempio di come la libreria Paging si inserisce nell'architettura della tua app.

Questa sezione descrive i componenti della libreria di paginazione che operano a ogni livello e il modo in cui collaborano per caricare e visualizzare i dati paginati.

Livello del repository

Il componente principale della libreria di paginazione nel livello del repository è PagingSource. Ogni oggetto PagingSource definisce un'origine dati e come recuperare i dati da quella sorgente. Un oggetto PagingSource può caricare i dati da una singola origine, incluse le origini di rete e i database locali.

Un altro componente della libreria di paginazione che potresti utilizzare è RemoteMediator. Un oggetto RemoteMediator gestisce la paginazione da un'origine dati a più livelli, ad esempio un'origine dati di rete con una cache del database locale.

Livello ViewModel

Il componente Pager fornisce un'API pubblica per la creazione di istanze di PagingData esposte negli stream reattivi, in base a un oggetto PagingSource e a un oggetto di configurazione PagingConfig.

Il componente che collega il livello ViewModel all'interfaccia utente è PagingData. Un oggetto PagingData è un contenitore per uno snapshot dei dati paginati. Esegue una query su un oggetto PagingSource e memorizza il risultato.

Livello UI

Il componente principale della libreria di paginazione nel livello UI è PagingDataAdapter, un RecyclerView adattatore che gestisce i dati paginati.

In alternativa, puoi utilizzare il componente AsyncPagingDataDiffer incluso per creare il tuo adattatore personalizzato.

Risorse aggiuntive

Per scoprire di più sulla libreria Paging, consulta le seguenti risorse aggiuntive:

Codelab