Paging-Bibliothek – Übersicht Teil von Android Jetpack.
Mit der Paging-Bibliothek können Sie Datenseiten aus einem größeren Dataset aus dem lokalen Speicher oder über ein Netzwerk laden und anzeigen. So kann Ihre App sowohl die Netzwerkbandbreite als auch die Systemressourcen effizienter nutzen. Die Komponenten der Paging-Bibliothek sind so konzipiert, dass sie in die empfohlene Android-App-Architektur passen, sich sauber in andere Jetpack-Komponenten einfügen und erstklassige Kotlin-Unterstützung bieten.
Vorteile der Verwendung der Paging-Bibliothek
Die Paging-Bibliothek umfasst die folgenden Funktionen:
- In-Memory-Caching für Ihre ausgelagerten Daten. So wird sichergestellt, dass Ihre App Systemressourcen effizient nutzt, während sie mit paginierten Daten arbeitet.
- Integrierte Deduplizierung von Anfragen, die dafür sorgt, dass Ihre App Netzwerkbandbreite und Systemressourcen effizient nutzt.
- Erstklassige Unterstützung für Kotlin-Koroutinen und -Flows.
- Integrierte Unterstützung für die Fehlerbehandlung, einschließlich Aktualisierungs- und Wiederholungsfunktionen.
Einrichtung
Wenn Sie Paging-Komponenten in Ihre Android-App importieren möchten, fügen Sie der Datei build.gradle Ihrer App die folgenden Abhängigkeiten hinzu:
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" }
Bibliotheksarchitektur
Die Komponenten der Paging-Bibliothek arbeiten auf drei Ebenen Ihrer App:
- Repository-Ebene
- Die Ebene
ViewModel - Die UI-Ebene
In diesem Abschnitt werden die Komponenten der Paging-Bibliothek beschrieben, die auf den einzelnen Ebenen ausgeführt werden, und wie sie zusammenarbeiten, um paginierte Daten zu laden und anzuzeigen.
Repository-Ebene
Die primäre Komponente der Paging-Bibliothek auf der Repository-Ebene ist PagingSource. Jedes PagingSource-Objekt definiert eine Datenquelle und wie Daten aus dieser Quelle abgerufen werden. Ein PagingSource-Objekt kann Daten aus einer beliebigen Quelle laden, einschließlich Netzwerkquellen und lokaler Datenbanken.
Eine weitere Komponente der Paging-Bibliothek, die Sie verwenden können, ist RemoteMediator. Ein RemoteMediator-Objekt verarbeitet das Paging aus einer mehrschichtigen Datenquelle, z. B. einer Netzwerkdatenquelle mit einem lokalen Datenbankcache.
ViewModel-Ebene
Die Komponente Pager bietet eine öffentliche API zum Erstellen von Instanzen von PagingData, die in reaktiven Streams verfügbar gemacht werden, basierend auf einem PagingSource-Objekt und einem PagingConfig-Konfigurationsobjekt.
Die Komponente, die die ViewModel-Ebene mit der Benutzeroberfläche verbindet, ist PagingData. Ein PagingData-Objekt ist ein Container für einen Snapshot von paginierten Daten. Es fragt ein PagingSource-Objekt ab und speichert das Ergebnis.
UI-Ebene
Die primäre Paging-UI-API ist collectAsLazyPagingItems(). Sie stellt paginierte Elemente als Liste von Daten bereit, die von den Lazy-Layout-Komponenten von Compose wie LazyColumn und LazyRow einfach genutzt werden können.
Fügen Sie die Bibliothek androidx.paging:paging-compose hinzu, um Compose-kompatible APIs zu verwenden, mit denen die UI automatisch auf Datenlasten, Aktualisierungen und Fehler reagieren kann, ohne dass Adapter oder Diffing-Logik erforderlich sind. Verwenden Sie die Erweiterungsfunktion collectAsLazyPagingItems() für ein Flow<PagingData>, um den zurückgegebenen LazyPagingItems in einem LazyColumn an items() zu übergeben.
@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() } } } }
Weitere Informationen finden Sie unter Große Datasets (Paging).
Empfehlungen für Sie
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Seitenweise Daten laden und anzeigen
- Zu Paging 3 migrieren
- Seite aus Netzwerk und Datenbank