Paging-Bibliothek – Übersicht   Teil von Android Jetpack.

Mit der Paging-Bibliothek können Sie Seiten mit Daten aus einem größeren Datensatz 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 nahtlos in andere Jetpack-Komponenten integrieren lassen und erstklassigen Kotlin-Support bieten.

Vorteile der Paging-Bibliothek

Die Paging-Bibliothek umfasst die folgenden Funktionen:

  • In-Memory-Caching für Ihre paginaten Daten. So wird sichergestellt, dass Ihre App Systemressourcen effizient nutzt, wenn sie mit ausgelagerten Daten arbeitet.
  • Integrierte Deduplizierung von Anfragen, die dafür sorgt, dass Ihre App 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 die Fehlerbehandlung, einschließlich Aktualisierungs- und Wiederholungsfunktionen.

Feedback geben

Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme für diese Bibliothek an, bevor Sie eine neue erstellen. Sie können für ein bestehendes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

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

Einrichten

Wenn Sie Paginierungskomponenten in Ihre Android-App importieren möchten, fügen Sie der Datei build.gradle Ihrer App die folgenden Abhängigkeiten hinzu:

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 werden in drei Schichten Ihrer App ausgeführt:

  • Die Repository-Ebene
  • Die Ebene ViewModel
  • Die UI-Ebene
Ein Bild, das die paginated Datenflüsse von den Komponenten „PagingSource“ oder „RemoteMediator“ in der Repository-Ebene zur Pager-Komponente in der ViewModel-Ebene zeigt.
    Die Pager-Komponente stellt dann dem PagingDataAdapter in der UI-Ebene einen Stream von PagingData zur Verfügung.
Abbildung 1: Ein Beispiel dafür, wie die Paging-Bibliothek in die Architektur Ihrer App passt.

In diesem Abschnitt werden die Komponenten der Paging-Bibliothek beschrieben, die auf jeder Ebene ausgeführt werden, und wie sie zusammenarbeiten, um gepufferte Daten zu laden und anzuzeigen.

Repository-Ebene

Die primäre Paging-Bibliothekskomponente in 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 lokalen Datenbanken.

Eine weitere Komponente der Paging-Bibliothek, die Sie verwenden können, ist RemoteMediator. Ein RemoteMediator-Objekt verarbeitet das Auslagern 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 bereitgestellt 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 paginaten Daten. Es wird ein PagingSource-Objekt abgefragt und das Ergebnis gespeichert.

UI-Ebene

Die primäre Paging-Bibliothekskomponente in der UI-Ebene ist PagingDataAdapter, ein RecyclerView-Adapter, der paginated 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 zusätzlichen Ressourcen:

Codelabs