Sayfa kitaplığına genel bakış Android Jetpack'in bir parçasıdır.

Sayfalama kitaplığı, yerel depolamada veya ağ üzerinden daha büyük bir veri kümesindeki veri sayfalarını yüklemenize ve görüntülemenize yardımcı olur. Bu yaklaşım, uygulamanızın hem ağ bant genişliğini hem de sistem kaynaklarını daha verimli kullanmasını sağlar. Paging kitaplığının bileşenleri, önerilen Android uygulama mimarisine uyacak, diğer Jetpack bileşenleriyle sorunsuz bir şekilde entegre olacak ve birinci sınıf Kotlin desteği sunacak şekilde tasarlanmıştır.

Sayfalama kitaplığını kullanmanın avantajları

Sayfalama kitaplığı aşağıdaki özellikleri içerir:

  • Sayfalandırılmış verileriniz için bellek içi önbelleğe alma. Bu, uygulamanızın sayfalık verilerle çalışırken sistem kaynaklarını verimli bir şekilde kullanmasını sağlar.
  • Uygulamanızın ağ bant genişliğini ve sistem kaynaklarını verimli bir şekilde kullanmasını sağlayan yerleşik istek tekilleştirme.
  • Kullanıcı, yüklenen verilerin sonuna doğru ilerlerken otomatik olarak veri isteyen yapılandırılabilir RecyclerView bağdaştırıcıları.
  • Kotlin eş yordamları ve akışlarının yanı sıra LiveData ve RxJava için birinci sınıf destek.
  • Yenileme ve yeniden deneme özellikleri de dahil olmak üzere hata işleme için yerleşik destek.

Geri bildirim gönderme

Geri bildirimleriniz Jetpack'i iyileştirmemize yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığın geliştirilmesiyle ilgili fikirleriniz olursa bize bildirin. Yeni bir kitaplık oluşturmadan önce bu kitaplıktaki mevcut sorunları kontrol edin. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Geri bildirim gönderme hakkında daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Kurulum

Sayfalama bileşenlerini Android uygulamanıza aktarmak için aşağıdaki bağımlılıkları uygulamanızın build.gradle dosyasına ekleyin:

Groovy

dependencies {
  def paging_version = "3.3.4"

  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.4"
}

Kotlin

dependencies {
  val paging_version = "3.3.4"

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

Kütüphane mimarisi

Sayfalama kitaplığının bileşenleri uygulamanızın üç katmanında çalışır:

  • Depo katmanı
  • ViewModel katmanı
  • Kullanıcı arayüzü katmanı
Kod deposu katmanındaki PagingSource veya RemoteMediator bileşenlerinden ViewModel katmanındaki Pager bileşenine sayfalı veri akışlarını gösteren resim.
    Daha sonra Çağrı Cihazı bileşeni, kullanıcı arayüzü katmanındaki PagingDataAdapter'a bir Sayfa Verisi Akışı gösterir.
Şekil 1. Sayfalandırma kitaplığının uygulama mimarinize nasıl uyum sağladığını gösteren bir örnek.

Bu bölümde, her bir katmanda çalışan Sayfalandırma kitaplığı bileşenleri ve bunların sayfa bölümü içeren verileri yüklemek ve görüntülemek için birlikte nasıl çalıştıkları açıklanmaktadır.

Kod deposu katmanı

Depo katmanındaki birincil Sayfalama kitaplığı bileşeni PagingSource'tir. Her PagingSource nesnesi, bir veri kaynağını ve bu kaynaktan verilerin nasıl alınacağını tanımlar. PagingSource nesnesi, ağ kaynakları ve yerel veritabanları dahil olmak üzere herhangi bir tek kaynaktan veri yükleyebilir.

Kullanabileceğiniz diğer bir Sayfalama Kitaplığı bileşeni RemoteMediator'tir. Bir RemoteMediator nesnesi, yerel veritabanı önbelleğine sahip bir ağ veri kaynağı gibi katmanlı bir veri kaynağından sayfa işlemlerini işler.

ViewModel katmanı

Pager bileşeni, bir PagingSource nesnesine ve bir PagingConfig yapılandırma nesnesine dayalı olarak reaktif akışlarda açığa çıkan PagingData örnekleri oluşturmak için herkese açık bir API sağlar.

ViewModel katmanını kullanıcı arayüzüne bağlayan bileşen PagingData'dir. PagingData nesnesi, sayfalandırılmış verilerin anlık görüntüsünün bir kapsayıcısıdır. Bir PagingSource nesnesini sorgular ve sonucu depolar.

kullanıcı arayüzü katmanı

Kullanıcı arayüzü katmanındaki birincil Sayfalandırma kitaplığı bileşeni, sayfalara ayrılmış verileri işleyen bir RecyclerView adaptörü olan PagingDataAdapter'tir.

Alternatif olarak, kendi özel bağdaştırıcınızı oluşturmak için birlikte verilen AsyncPagingDataDiffer bileşenini de kullanabilirsiniz.

Ek kaynaklar

Sayfalama kitaplığı hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynaklara bakın:

Codelab uygulamaları

Sana Özel