Paging-Bibliothek – Übersicht Teil von Android Jetpack

Mit der Paging-Bibliothek können Sie Seiten mit Daten aus einem größeren Dataset aus dem lokalen Speicher oder über ein Netzwerk laden und anzeigen lassen. Mit diesem Ansatz kann Ihre Anwendung 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, problemlos in andere Jetpack-Komponenten eingebunden werden können und erstklassigen Kotlin-Support bieten.

Vorteile der Paging-Bibliothek

Die Paging-Bibliothek umfasst die folgenden Funktionen:

  • In-Memory-Caching für ausgelagerte Daten Dadurch wird sichergestellt, dass Ihre Anwendung Systemressourcen effizient nutzt, während sie mit ausgelagerten Daten arbeitet.
  • Die integrierte Anfragededuplizierung trägt dazu bei, dass Ihre Anwendung Netzwerkbandbreite und Systemressourcen effizient nutzt.
  • Konfigurierbare RecyclerView-Adapter, die automatisch Daten anfordern, wenn der Nutzer zum Ende der geladenen Daten scrollt.
  • Erstklassige Unterstützung für Kotlin-Coroutinen und -Abläufe sowie LiveData und RxJava.
  • Integrierte Unterstützung für Fehlerbehandlung, einschließlich Aktualisierungs- und Wiederholungsfunktionen.

Feedback geben

Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Prüfen Sie die vorhandenen Probleme für diese Bibliothek, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen zum Senden von Feedback finden Sie in der Dokumentation zum Issue Tracker.

Einrichten

Fügen Sie der Datei build.gradle der App die folgenden Abhängigkeiten hinzu, um Paging-Komponenten in Ihre Android-App zu importieren:

Cool

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

Bibliotheksarchitektur

Die Komponenten der Paging-Bibliothek sind auf drei Ebenen Ihrer Anwendung verteilt:

  • Repository-Ebene
  • ViewModel-Ebene
  • UI-Ebene
Ein Bild, das den Datenfluss mit Seitendaten von der PagingSource- oder RemoteMediator-Komponente in der Repository-Ebene zur Pager-Komponente in der ViewModel-Ebene zeigt.
    Anschließend stellt die Pager-Komponente einen Flow von PagingData für den PagingDataAdapter auf der UI-Ebene zur Verfügung.
Abbildung 1. Ein Beispiel dafür, wie die Paging-Bibliothek in Ihre Anwendungsarchitektur passt.

In diesem Abschnitt werden die Komponenten der Paging-Bibliothek, die auf jeder Ebene ausgeführt werden, und ihr Zusammenwirken beim Laden und Anzeigen von ausgelagerten Daten beschrieben.

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 einzelnen Quelle laden, einschließlich Netzwerkquellen und lokalen Datenbanken.

Eine weitere Komponente der Auslagerungsbibliothek 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 PagingData-Instanzen, die in reaktiven Streams verfügbar gemacht werden. Sie basieren auf einem PagingSource-Objekt und einem PagingConfig-Konfigurationsobjekt.

Die Komponente, die die ViewModel-Ebene mit der UI verbindet, ist PagingData. Ein PagingData-Objekt ist ein Container für einen Snapshot paginierter Daten. Sie fragt ein PagingSource-Objekt ab und speichert das Ergebnis.

UI-Ebene

Die primäre Komponente der Paging-Bibliothek auf der UI-Ebene ist PagingDataAdapter, ein RecyclerView-Adapter, der paginierte Daten verarbeitet.

Alternativ können Sie die enthaltene Komponente AsyncPagingDataDiffer verwenden, um einen eigenen benutzerdefinierten Adapter zu erstellen.

Weitere Informationen

Weitere Informationen zur Paging-Bibliothek finden Sie in den folgenden Ressourcen:

Codelabs

Produktproben