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.
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
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
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Caricare e visualizzare i dati paginati
- Eseguire la migrazione a Paging 3
- Pagina dalla rete e dal database