Sayfalandırma

Paging kitaplığı, uygulamanızın RecyclerView'unda verileri kademeli ve sorunsuz bir şekilde yüklemenizi kolaylaştırır.

Bu tabloda, androidx.paging grubundaki tüm yapılar listelenir.

Yapı Kararlı Sürüm Sürüm Adayı Beta sürümü Alfa Sürümü
paging-* 3.5.3 - - -
paging-compose 3.5.3 - - -
Bu kitaplık en son 12 Ekim 2026'da güncellenmiştir.

Bağımlılıkları bildirme

Sayfalandırma'ya bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposu sayfasını okuyun.

Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:

Groovy

dependencies {
  def paging_version = "3.5.3"

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

Kotlin

dependencies {
  val paging_version = "3.5.3"

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

Kotlin uzantılarını kullanma hakkında bilgi için ktx belgelerine bakın.

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Issue Tracker belgelerine bakın.

Sürüm 3.5

Sürüm 3.5.3

12 Ekim 2026

androidx.paging:paging-*:3.5.3 yayınlandı. 3.5.3 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • ItemSnapshotListFlow, bir RemoteMediator her iki yönde de sayfalama sonuna ulaştığında ve bir üstbilgi veya altbilgi terminal ayırıcıya dönüştürüldüğünde artık IllegalArgumentException hatası vermeyecek. (I821c7, b/566336825)
  • Yüklenen sayfa sayısı PagingConfig.maxSize değerini aştığında, görüntü alanının verilerle düzgün şekilde doldurulması için yüklenen sayfalar iki sayfanın altına düşmez. (I037a0, b/565835910)

Harici Katkı

b/565835910 kimlikli hata düzeltmesini gönderdiği için Igor'a teşekkür ederiz.

Sürüm 3.5.2

7 Ekim 2026

androidx.paging:paging-*:3.5.2 yayınlandı. 3.5.2 sürümü bu commit'leri içerir.

Hata düzeltmeleri

  • İlk yenileme tamamlanmadan önce yapılan Pager.append() aramaları artık NoSuchElementException hatası vermeyecek. Ekleme çağrısı işlem yapmaz. (Ide387, b/556780796)

Sürüm 3.5.1

12 Ağustos 2026

androidx.paging:paging-*:3.5.1 yayınlandı. 3.5.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Yer tutuculara kaydırılırken ayırıcılar içeren bir sayfa yenilendiğinde PagingSource.getRefreshKey öğesinin çok büyük ve yanlış bir anchorPosition sağlaması sorunu düzeltildi. (I475f0, b/516565503)

Sürüm 3.5.0

6 Mayıs 2026

androidx.paging:paging-*:3.5.0 yayınlandı. 3.5.0 sürümü bu commit'leri içerir.

3.4.0 sürümünden sonra yapılan önemli değişiklikler:

  • Flow<PagingData> değerini Flow<ItemSnapshotList> değerine dönüştürmek için Flow<PagingData>.asItemSnapshotListFlow operatörü eklendi. Bu sayede, yüklenen verilere artık kullanıcı arayüzü katmanının dışından erişilebilir. Böylece Flow<ItemSnapshotList> öğesini diğer veri kaynaklarıyla birleştirebilir, sayfalı verileri yerel olarak önbelleğe alıp değiştirebilir veya sayfalı verileri kullanıcı arayüzü durumunun bir parçası olarak gösterebilirsiniz.

  • Kaydırma yapmadan manuel olarak daha fazla veri yüklemek için Pager.append ve Pager.prepend uzantı işlevleri eklendi.

  • asItemSnapshotListFlow API'yi kullanırken yükleme hatalarından kurtulmak için Pager.refresh ve Paging.retry uzantı işlevleri eklendi.

Sürüm 3.5.0-rc01

22 Nisan 2026

androidx.paging:paging-*:3.5.0-rc01 yayınlandı. 3.5.0-rc01 sürümü bu commit'leri içerir.

Değişiklik yok

  • 3.5.0-beta01 sürümünden bu yana önemli bir değişiklik yapılmadı.

Sürüm 3.5.0-beta01

8 Nisan 2026

androidx.paging:paging-*:3.5.0-beta01 yayınlandı. 3.5.0-beta01 sürümü bu commit'leri içerir.

API değişiklikleri

  • Flow<PagingData>.asState API'sinin adı Flow<PagingData>.asItemSnapshotListFlow olarak değiştirildi (I0dc11, b/496548025)

Sürüm 3.5.0-alpha01

11 Mart 2026

androidx.paging:paging-*:3.5.0-alpha01 yayınlandı. 3.5.0-alpha01 sürümü bu commit'leri içerir.

Yeni Özellikler

  • paging-common yapısı artık Flow<PagingData> üzerinde yeni bir asState akış operatörü içeriyor ve bu operatör, yapıyı Flow<ItemSnapshotList> değerine dönüştürüyor. Bu sayede aşağıdaki gibi özelliklerden yararlanabilirsiniz:

    • ItemSnapshotList akışını diğer veri kaynaklarıyla birleştirme
    • cachedIn olmadan birden fazla toplayıcıyla akış paylaşma
    • sayfalandırılmış verileri yerel olarak önbelleğe alma
    • bellekteki sayfalandırılmış verileri değiştirme
    • sayfalandırılmış verileri kullanıcı arayüzü durumu kapsamında kullanıma sunma
    // In your ViewModel
    val pager = Pager(pagingConfig, pagingSourceFactory)
    val pagerFlow = pager.flow.asState()
    
    // alterantively convert the flow to a SharedFlow
    val pagerFlow = pager.flow.asState().stateIn()
    
    // In presenter layer
    val snapshotFlow = viewModel.pagerFlow.collectAsStateWithLifecycle(initialList)
    val snapshot = itemsFlow.value
    
    LazyColumn {
    items(items = snapshot.items) { ... }
    }
    
  • paging-common yapısı, yüklenen öğelerin her iki ucunda da yüklemeleri manuel olarak tetiklemek için Pager.append ve Pager.prepend API'lerini de ekledi.

    • paging-runtime veya paging-compose ile kullanıldığında, kaydırmanın yanı sıra daha fazla veri yüklemek için alternatif bir yöntem sunar.
    • Yeni asState API ile kullanıldığında daha fazla veri yüklemenin tek yoludur.
    LazyColumn {
    item {
           /**
           * Load more items when users scroll near the top of loaded items.
           */
           LaunchedEffect(viewModel) { viewModel.prepend() }
        }
    items(snapshot.items) { item -> Text("Item: $item") }
    item {
            /**
            * Load more items when users scroll near the bottom of loaded items.
            */
          LaunchedEffect(viewModel) { viewModel.append() }
      }
    }
    
  • asState API'si kullanılırken yükleme hatalarını düzeltmek için Pager.refresh ve Pager.retry eklendi. Yeni API'lerin daha fazla örnek kullanımı için bu dokümana bakın. (I1e1e9, If3c87, Idbd48, Id1e1d, I816fe)

Sürüm 3.4

Sürüm 3.4.2

11 Mart 2026

androidx.paging:paging-*:3.4.2 yayınlandı. 3.4.2 sürümü bu commit'leri içerir.

Değişiklik yok

  • Bu sürümde, 3.4.1 sürümüne kıyasla herhangi bir API veya davranış değişikliği yoktur.

Sürüm 3.4.1

11 Şubat 2026

androidx.paging:paging-*:3.4.1 yayınlandı. 3.4.1 sürümü bu commit'leri içerir.

Bağımlılık Güncellemesi

  • paging-guava'nın guava bağımlılığı 31.1 sürümünden 32.0.1 sürümüne güncellendi.

Sürüm 3.4.0

28 Ocak 2026

androidx.paging:paging-*:3.4.0 yayınlandı. 3.4.0 sürümü bu commit'leri içerir.

3.3.0 sürümünden sonra yapılan önemli değişiklikler:

  • paging-common, paging-testing ve paging-compose için daha fazla KMP hedefi eklendi. Bu kitaplıklar artık JVM(Android ve masaüstü), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) ve Web (JavaScript, WasmJS) platformlarını destekliyor.
  • paging-common, paging-testing ve paging-compose, Jetbrains'in macosX64 hedeflerini kullanımdan kaldırmasıyla uyumlu olmak için macosX64, iosX64, watchosX64 ve tvosX64 desteğini kaldırdı.
  • Hedef konuma en yakın olan ve giriş yüklemiyle eşleşen yüklenen öğeyi almak için yeni bir PagingState API'si closestItemAroundPosition eklendi. Bu, ideal sabitlenebilir öğenin hedef konumun tam üzerinde olmasa da yakınında olduğu durumlarda öğe tabanlı yenileme anahtarları oluşturmak için kullanılabilir.

Sürüm 3.4.0-rc01

14 Ocak 2026

androidx.paging:paging-*:3.4.0-rc01 yayınlandı. 3.4.0-rc01 sürümü bu commit'leri içerir.

Yeni özellikler

Sürüm 3.4.0-beta01

17 Aralık 2025

androidx.paging:paging-*:3.4.0-beta01 yayınlandı. 3.4.0-beta01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • RecyclerView ve Refresh yüklemeleri arasındaki yarış durumunu düzelterek RecyclerView içinde IndexOutOfBoundsException hatasını giderin. Sürekli Refresh yüklemeleri nedeniyle kullanıcı arayüzü güncellemelerinin kesintiye uğraması, Sayfalandırma durumunun RecyclerView ile senkronizasyonunun bozulmasına neden olabilir. Yenileme işlemi kesintiye uğrarsa (ör. art arda Refresh yükleme nedeniyle) Paging, yenileme öncesi durumuna sıfırlanarak bu sorun düzeltilir. (I771b0, b/409809768)

Sürüm 3.4.0-alpha04

10 Eylül 2025

androidx.paging:paging-*:3.4.0-alpha04 yayınlandı. 3.4.0-alpha04 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Hedef konuma en yakın olan ve giriş yüklemiyle eşleşen yüklenmiş öğeyi almak için yeni bir PagingState API closestItemAroundPosition eklendi. Bu, ideal sabitlenebilir öğenin hedef konumun tam üzerinde olmasa da yakınında olduğu durumlarda öğe tabanlı yenileme anahtarları oluşturmak için kullanılabilir. (I96e5c, b/440187139)

Sürüm 3.4.0-alpha03

27 Ağustos 2025

androidx.paging:paging-*:3.4.0-alpha03 yayınlandı. 3.4.0-alpha03 sürümü bu commit'leri içerir.

Yeni özellikler

  • Paging-common, yeni bir Kotlin Multiplatform (KMP) hedefi olarak masaüstünü ekledi. Şu anda JVM(Android ve masaüstü), yerel (Linux, iOS, watchOS, tvOS, macOS, MinGW) ve web (JavaScript, WasmJS) platformlarını destekliyor. (Id2483, b/436884811)
  • Paging-testing'e yeni Kotlin Multiplatform (KMP) hedefleri eklendi. Toplamda artık JVM(Android ve Masaüstü), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) ve Web (JavaScript, WasmJS) desteklenmektedir. (I0c543, b/435014650)
  • Paging-compose, yeni Kotlin Multiplatform (KMP) hedefleri ekledi. Toplamda artık JVM(Android ve Masaüstü), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) ve Web (JavaScript, WasmJS) desteklenmektedir. (I70d44, b/436884801)

API Değişiklikleri

Sürüm 3.4.0-alpha02

30 Temmuz 2025

androidx.paging:paging-*:3.4.0-alpha02 yayınlandı. 3.4.0-alpha02 sürümü bu kayıtları içerir.

API değişiklikleri

  • PagingData.from artık placeholdersBefore ve placeholdersAfter ayarlanmasına izin veriyor. Bu yer tutucular arasında gezinmenin yüklemeleri tetiklemediğini unutmayın. (I06983)

Sürüm 3.4.0-alpha01

2 Temmuz 2025

androidx.paging:paging-*:3.4.0-alpha01 yayınlandı. 3.4.0-alpha01 sürümü bu commit'leri içerir.

Yeni özellikler

Hata Düzeltmeleri

  • Paging 3.3 veya sonraki sürümleri kullanan Android birim testleri artık PagingLogger (Ia9400, b/331684448) üzerinden hata vermeyecek.
  • Kullanıcı RecyclerView öğesini güncellerken kaydırdığında RecyclerView öğesinin IndexOutOfBoundsException hatası vermesine neden olan hata düzeltildi (Id1f16, b/381024738).
  • Kaydırma sırasında yenileme yaparken sayfalama işleminin daha fazla yükleme tetikleyememesiyle ilgili hata düzeltildi. (I60ca5, b/352586078)
  • Sayfalama öğeleri yenilenirken kaydırma yapıldığında uygulamanın kilitlenmesine neden olan sorun düzeltildi. (I8c65a, b/347649763)

Sürüm 3.3

Sürüm 3.3.6

12 Şubat 2025

androidx.paging:paging-*:3.3.6 yayınlandı. 3.3.6 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • İlk yenileme sırasında gönderilen yenileme ve yeniden deneme sinyalleri artık depolanacak ve Paging presenter hazır olduğunda otomatik olarak yeniden gönderilecek.

Harici Katkı

  • Hata düzeltmeyi (#754) gönderdiğiniz için Eva'ya teşekkür ederiz.

Sürüm 3.3.5

11 Aralık 2024

androidx.paging:paging-*:3.3.5 yayınlandı. 3.3.5 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Kullanıcı RecyclerView güncellenirken kaydırdığında RecyclerView öğesinin IndexOutOfBoundsException hatası vermesine neden olan hata düzeltildi. (Id1f16, b/381024738)

Sürüm 3.3.4

13 Kasım 2024

androidx.paging:paging-*:3.3.4 yayınlandı. 3.3.4 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Paging 3.3 veya sonraki sürümlerin kullanıldığı Android birim testlerinde artık Method isLoggable in android.util.Log not mocked gibi bir hata gösterilmeyecek. (Ia9400, b/331684448)

Sürüm 3.3.2

7 Ağustos 2024

androidx.paging:paging-*:3.3.2 yayınlandı. 3.3.2 sürümü bu commit'leri içerir.

Yeni özellikler

  • paging-common ve paging-testing, watchos, tvos ve linuxArm64 olmak üzere yeni Kotlin Multiplatform hedefleri ekledi. (90c9768), (53e0eca)

Sürüm 3.3.1

24 Temmuz 2024

androidx.paging:paging-*:3.3.1 yayınlandı. 3.3.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • AsyncPagingDataDiffer veya RecyclerView ile kullanılan PagingDataAdapter gibi bunun üzerine oluşturulan API'lerin, kaydırma sırasında destekleyici veri kaynağı yenilendiğinde daha fazla yükleme tetikleyememesi sorunu düzeltildi. (I60ca5, b/352586078)
  • PagingDataAdapter veya AsyncPagingDataDiffer kullanarak RecyclerView kaydırılırken öğeler yedek veri kaynağından kaldırıldığında oluşan kilitlenme sorunu düzeltildi. (I8c65a, b/347649763)

Sürüm 3.3.0

14 Mayıs 2024

androidx.paging:paging-*:3.3.0 yayınlandı. 3.3.0 sürümü bu commit'leri içerir.

3.2.0 sürümünden beri yapılan önemli değişiklikler

  • PagingDataPresenter artık herkese açık bir sınıf. Çoklu platform sunucuları artık dahili Paging API'leri veya paging-runtime'nin AsyncPagingDataDiffer sınıfını gerektirmek yerine PagingDataPresenter üzerine oluşturulabilir.
  • LoadStates öğesinin sırasıyla Hata veya NotLoading durumunda olup olmadığını kontrol etmek için hasError ve isIdle'ya yeni LoadStates ve CombinedLoadStates yardımcı yöntemleri eklendi. Ayrıca, Flow<CombinedLoadStates> üzerinde, yükleme NotLoading veya hata durumuna geçene kadar bekleyen yeni bir awaitNotLoading() Kotlin uzantı yöntemi eklendi.
  • PagingData.empty(), oluşturucusuna özel LoadStates geçirilmediği sürece artık varsayılan olarak NotLoading durumlarını gönderir. Bu, PagingDataAdapter öğesine gönderildiğinde LoadStates göndermediği veya LazyPagingItems olarak toplandığında yükleme durumlarını gönderdiği mevcut davranıştan farklıdır. LazyPagingItems olarak toplandığında, ilk oluşturma işleminden hemen sonra boş bir liste de gösterilir.

Kotlin Multiplatform Uyumluluğu

Paging, büyük ölçüde CashApp'in multiplatform-paging projesinden alınan çalışmalar sayesinde artık Kotlin Multiplatform ile uyumlu yapılar sunuyor.

  • paging-common, tüm Paging 3 API'lerini common'e taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumlu.
  • paging-testing, kodunu common konumuna taşıdı ve artık Android'in yanı sıra JVM ve iOS ile de uyumlu.
  • paging-compose, kodunu common konumuna taşıdı ve androidx.compose'nin çoklu platform desteğiyle eşleşen bir Android yapısı sunuyor.
  • paging-runtime, paging-guava, paging-rxjava2 ve paging-rxjava3 yalnızca Android'de kullanılabilir.

Sürüm 3.3.0-rc01

1 Mayıs 2024

androidx.paging:paging-*:3.3.0-rc01, Paging 3.3.0-beta01 sürümünde herhangi bir değişiklik olmadan yayınlandı. 3.3.0-rc01 sürümü bu kayıtları içerir.

Sürüm 3.3.0-beta01

3 Nisan 2024

androidx.paging:paging-*:3.3.0-beta01, önemli bir değişiklik olmadan yayınlandı. 3.3.0-beta01 sürümü bu kayıtları içerir.

Sürüm 3.3.0-alpha05

20 Mart 2024

androidx.paging:paging-*:3.3.0-alpha05 yayınlandı. 3.3.0-alpha05 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Paging artık ortak kod için AndroidX Annotation @MainThread ek açıklamasını kullanıyor. (I78f0d, b/327682438)

Sürüm 3.3.0-alpha04

6 Mart 2024

androidx.paging:paging-*:3.3.0-alpha04 yayınlandı. 3.3.0-alpha04 sürümü bu kayıtları içerir.

Hata düzeltmeleri

  • Kotlin çoklu platform uyumluluğunun eklenmesiyle ilgili küçük doküman hataları düzeltildi. (aosp/2950785)

Sürüm 3.3.0-alpha03

7 Şubat 2024

androidx.paging:paging-*:3.3.0-alpha03 yayınlandı. 3.3.0-alpha03 sürümü bu kayıtları içerir.

Yeni Özellikler

  • PagingDataPresenter artık herkese açık bir sınıf. Çok platformlu sunumlar artık dahili Sayfalandırma API'leri veya paging-runtime'nin AsyncPagingDataDiffer'lerini gerektirmek yerine PagingDataPresenter üzerine kurulabilir. (Id1f74, b/315214786)
  • LoadStates öğesinin Hata veya NotLoading durumunda olup olmadığını kontrol etmek için yeni LoadStates ve CombinedLoadStates yardımcı yöntemleri eklendi. Ayrıca, bir yükleme NotLoading veya Hata durumuna geçene kadar LoadStateFlow üzerinde bekleyen yeni bir API eklendi. (Id6c67)

Davranış değişikliği

  • PagingData.empty(), oluşturucusuna özel LoadStates geçirilmediği sürece artık varsayılan olarak NotLoading durumlarını gönderir. Bu, PagingDataAdapter öğesine gönderildiğinde LoadStates öğesini göndermediği veya LazyPagingItems olarak toplandığında Yükleniyor durumlarını gönderdiği mevcut davranıştan farklıdır. LazyPagingItems olarak toplandığında, ilk oluşturma işleminden hemen sonra boş bir liste de gösterilir. (I4d11d, b/301833847)

Sürüm 3.3.0-alpha02

20 Eylül 2023

androidx.paging:paging-*:3.3.0-alpha02 yayınlandı. 3.3.0-alpha02 sürümü bu kayıtları içerir.

Kotlin Multiplatform Uyumluluğu

Paging, büyük ölçüde CashApp'in multiplatform-paging projesinden alınan çalışmalar sayesinde artık Kotlin Multiplatform ile uyumlu yapılar sunuyor. Bu sayede iki depo arasındaki farklılıkları önleyebilir ve depoları uyumlu tutabiliriz.

  • paging-common, tüm Paging 3 API'lerini common'ye taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumlu.
  • paging-testing, kodunu common konumuna taşıdı ve artık Android'in yanı sıra JVM ve iOS ile de uyumlu.
  • paging-compose, kodunu common konumuna taşıdı ve androidx.compose'nin çoklu platform desteğiyle eşleşen bir Android yapısı sunuyor.
  • paging-runtime, paging-guava, paging-rxjava2 ve paging-rxjava3 yalnızca Android'de kullanılabilir.

API değişiklikleri

  • Yalnızca şirket içi kullanım için tasarlanan herkese açık Logger arayüzünün desteği sonlandırıldı (I16e95, b/288623117)

Harici Katkı

Sürüm 3.3.0-alpha01

20 Eylül 2023

  • Bu, androidx.paging kitaplıklarının ilk çok platformlu sürümüdür. Bu sürümde yalnızca *-jvm ve *-android yapıları var. macOS, iOS ve Linux varyantları için 3.3.0-alpha02 kullanın.

Sürüm 3.2

Sürüm 3.2.1

6 Eylül 2023

androidx.paging:paging-*:3.2.1 yayınlandı. 3.2.1 sürümü bu commit'leri içerir.

Hata düzeltmeleri

  • Paging Testing yapısının asSnapshot() API'sine PagingData.from(List) kullanılarak oluşturulmuş bir Flow iletildiğinde, asSnapshot() API'sinin yüklemenin ne zaman tamamlandığına dair bilgi sahibi olmaması (PagingData.from(List, LoadStates) aşırı yüklemesinin aksine) nedeniyle kilitlenmesine neden olan sorun düzeltildi. Bu geçici çözüm yalnızca tamamlanabilir Flow'lar (ör. flowOf(PagingData.from(...))) için geçerlidir. Tamamlanamayan Flow'lar (ör. MutableStateFlow) için LoadStates sağlayan PagingData.from aşırı yüklemesini kullanın. (I502c3)
  • Paging Compose, yeni verilerin yükleme tamamlandığında aynı karede kullanılabilir olmasını sağlamak için artık dahili olarak AndroidUiDispatcher.Main kullanıyor. (Ia55af)

Sürüm 3.2.0

26 Temmuz 2023

androidx.paging:paging-*:3.2.0 yayınlandı. 3.2.0 sürümü bu commit'leri içerir.

3.1.0 sürümünden sonra yapılan önemli değişiklikler

  • Paging Compose, API kararlılığına ulaştı ve Paging'in geri kalanıyla birleştirildi. Artık sürümü diğer tüm Paging yapılarıyla eşleşiyor. 3.1.0 sürümünden sonra yapılan değişiklikler:
    • PagingData.from(fakeData) oluşturup bunu PagingData MutableStateFlow içinde sarmalayarak (ör. MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) sahte veri listesini önizleme desteği. Önizleme için collectAsLazyPagingItems() alıcısı olarak bu akışı @Preview composable'larına iletin.
    • LazyVerticalGrid ve HorizontalPager gibi tüm geç yüklenen düzenlerin yanı sıra Wear ve TV kitaplıklarındaki özel geç yüklenen bileşenler için destek. Bu, yeni alt düzey LazyPagingItems uzantı yöntemleri itemKey ve itemContentType ile sağlandı. Bu yöntemler, key ve contentType parametrelerini LazyColumn, LazyVerticalGrid için mevcut olan standart items API'lerine ve HorizontalPager gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olur.
    • Yalnızca LazyListScope'yi destekleyen items(lazyPagingItems) ve itemsIndexed(lazyPagingItems) için destek sonlandırıldı.
  • Uygulamanızın her katmanının ve Paging ile entegrasyonunun ayrı ayrı birim testine yönelik tasarlanmış API'ler sağlayan yeni paging-testing yapısı. Örneğin, şunları içerir:
    • TestPager sınıfı, kendi özel PagingSource uygulamanızın davranışını Pager ve gerçek kullanıcı arayüzünden bağımsız olarak doğrulamanıza olanak tanır.
    • ​​asPagingSourceFactory API'leri, testlerde Pager'a iletilebilecek bir Flow<List<Value>> veya statik List<Value> öğesini PagingSourceFactory öğesine dönüştürür.
    • asSnapshot Kotlin uzantısı Flow<PagingData<Value>>, Flow<PagingData<Value>> öğesini doğrudan List<Value> öğesine çevirir. asSnapshot lambda, scrollTo veya appendScrollWhile gibi API'ler aracılığıyla uygulamanızın kullanıcı arayüzünü taklit etmenize olanak tanır. Böylece, verilerin anlık görüntüsünün, sayfalandırılmış verilerinizde herhangi bir noktada doğru olduğunu doğrulayabilirsiniz.
  • Sayfalama hata ayıklama bilgilerini iki düzeyde göstermek için varsayılan günlükler eklendi: VERBOSE ve DEBUG. Günlükler, adb shell setprop log.tag.Paging [DEBUG|VERBOSE] komutuyla etkinleştirilebilir. Bu durum, görünümlerle Sayfalandırma veya Compose ile Sayfalandırma için geçerlidir.
  • PagingDataAdapter ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden oluşturucular eklendi.
  • Önceki () -> PagingSource lambda'lardan daha açık bir API yüzeyi sağlayan yeni bir PagingSourceFactory işlevsel arayüzü eklendi. Bu fabrika, bir Pager örneklendirmek için kullanılabilir.

Sürüm 3.2.0-rc01

21 Haziran 2023

androidx.paging:paging-*:3.2.0-rc01 yayınlandı. 3.2.0-rc01 sürümü bu kayıtları içerir.

Harici Katkı

  • Sayfalandırma özelliğinin Android/JVM'ye özgü olmaktan çıkarılmasına katkıda bulunduğu için Veyndan'a teşekkür ederiz. (#553, #554, #555, #559)

Sürüm 3.2.0-beta01

7 Haziran 2023

androidx.paging:paging-*:3.2.0-beta01 yayınlandı. 3.2.0-beta01 sürümü bu kayıtları içerir.

Paging Compose

  • Paging Compose, resmi olarak API kararlılığına ulaştı. Bu nedenle, sürüm 1.0.0-alpha20 sürümünden diğer tüm Paging yapıları ile eşleşecek şekilde güncellendi.

API değişiklikleri

Sürüm 3.2.0-alpha06

24 Mayıs 2023

androidx.paging:paging-*:3.2.0-alpha06 yayınlandı. 3.2.0-alpha06 sürümü bu commit'leri içerir.

Yeni özellikler

  • Mevcut () -> PagingSource lambda'lardan daha açık bir API yüzeyi sağlayan yeni bir PagingSourceFactory işlevsel arayüz eklendi. Bu fabrika, Pager örneklendirmek için kullanılabilir. (I33165, b/280655188)
  • Yalnızca sabit bir veri listesinden yüklenen bir PagingSourceFactory elde etmek için yeni List<Value>.asPagingSourceFactory() paging-testing API'si eklendi. Flow<List<Value>> üzerindeki mevcut uzantı, birden fazla statik veri nesliyle test yapmak için kullanılmaya devam edilmelidir. (Id34d1, b/280655188)

API değişiklikleri

  • Sayfalama testindeki tüm herkese açık API'ler artık yalnızca testlerde kullanılmalarını sağlamak için @VisibleForTesting ile açıklama eklenmiş durumda. (I7db6e)
  • asSnapshot API'si artık CoroutineScope iletme gerektirmiyor. Artık varsayılan olarak üst kapsamından devralınan bağlamı kullanır. (Id0a78, b/282240990)
  • TestPager oluşturucu parametreleri, gerçek Pager oluşturucu parametrelerinin sırasıyla sezgisel olarak eşleşecek şekilde yeniden sıralandı (I6185a).
  • paging-testing'in () -> PagingSource<Key, Value> lambda türü kullanımı PagingSourceFactory<Key, Value> türüne taşındı. (I4a950, b/280655188)

Davranış Değişiklikleri

  • asSnapshot Sayfalama testlerini çalıştırmak için artık ana dağıtıcı gerekmiyor. Bu ayar artık test davranışında herhangi bir değişikliğe neden olmuyor. (Ie56ea)

Sürüm 3.2.0-alpha05

3 Mayıs 2023

androidx.paging:paging-*:3.2.0-alpha05 yayınlandı. 3.2.0-alpha05 sürümü bu kayıtları içerir.

API değişiklikleri

  • asSnapshot için Paging Testing API'nin loadOperations parametresi artık varsayılan olarak boş bir lambda değerine ayarlanır. Bu sayede, ilk yenileme yüklemesinden verileri almak için herhangi bir yükleme işlemi iletmeden asSnapshot çağrılabilir. (Ied354, b/277233770)

Dokümanlarla İlgili İyileştirmeler

  • asPagingSourceFactory() ile ilgili dokümanlar, PagingSource örnekleri oluşturmak için yeniden kullanılabilir bir fabrika döndüren Flow üzerinde bir uzantı yöntemi olduğunu açıklayacak şekilde güncellendi. (I5ff4f, I705b5)
  • Atlamayı desteklemek için itemsBefore ve itemsAfter değerlerini geçersiz kılma ihtiyacını açıklamak üzere LoadResult.Page oluşturucu ile ilgili dokümanlar güncellendi. (Ied354)

Harici Katkılar

Sürüm 3.2.0-alpha04

8 Şubat 2023

androidx.paging:paging-*:3.2.0-alpha04 yayınlandı. 3.2.0-alpha04 sürümü bu kayıtları içerir.

Sayfalandırma Testi

  • paging-testing yapısı artık bir Pager'a sağlanacak Flow<List<Value>> öğesinden pagingSourceFactory oluşturmak için bir asPagingSourceFactory yöntemi içeriyor. Flow'dan yayılan her List<Value>>, bir sayfalara ayrılmış veri neslini temsil eder. Bu, örneğin PagingData dönüşümlerinde, Pager'ın veri toplamak için kullanacağı bir veri kaynağı oluşturarak sayfalama testlerini kolaylaştırır. (I6f230, b/235528239)
  • paging-testing yapısı, Flow<PagingData<T>> içinde bulunan verilerin doğru olduğunu doğrulamaya uygun yeni API'lerle genişletildi. Bu, örneğin ViewModel katmanınızdan bir Flow<PagingData<T>> çıkışını onaylamak için kullanılabilir.

    Bu işlem, asSnapshot Kotlin uzantısı kullanılarak yapılır. Bu uzantı, Flow<PagingData<Value>> öğesini doğrudan List<Value> öğesine çevirir.Flow<PagingData<Value>> asSnapshot lambda'sı, scrollTo veya appendScrollWhile gibi API'ler aracılığıyla uygulamanızın kullanıcı arayüzünü tekrarlanabilir ve tutarlı bir şekilde taklit etmenize olanak tanır. Böylece, verilerin anlık görüntüsünün sayfalara ayrılmış verilerinizin herhangi bir noktasında doğru olduğunu doğrulayabilirsiniz.

    // Create your ViewModel instance
    val viewModel = …
    // Get the Flow of PagingData from the ViewModel
    val data< Flow<PagingData<String>> = viewModel.data
    val snapshot: List<String> = data.asSnapshot {
      // Each operation inside the lambda waits for the data to settle before continuing
      scrollTo(index = 50)
    
      // While you can’t view the items within the asSnapshot call,
      // you can continuously scroll in a direction while some condition is true
      // i.e., in this case until you hit a placeholder item
      appendScrollWhile {  item: String -> item != “Header 1” }
    }
    // With the asSnapshot complete, you can now verify that the snapshot
    // has the expected values
    

    asSnapshot, runTest içinde çalıştırılması beklenen bir suspend yöntemidir. Daha fazla bilgi için Android'de Kotlin eş yordamlarını test etme konusuna bakın. (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, Ic1238, I96def, b/235528239)

API Değişiklikleri

  • AsyncPagingDataDiffer ve PagingDataAdapter'deki getItem ve peek için kullanıcı arayüzü çağrıları artık yalnızca ana iş parçacığında çağrılabilir olarak doğru şekilde işaretleniyor. (I699b6)
  • TestPager tarafından kullanılan genel türlerden joker karakterler kaldırıldı. Böylece, bu yöntemlerin sonuçlarının Java programlama dilinde yazılmış kodda kullanılması kolaylaştırıldı. (I56c42)

Sürüm 3.2.0-alpha03

24 Ekim 2022

androidx.paging:paging-*:3.2.0-alpha03 yayınlandı. 3.2.0-alpha03 sürümü bu taahhütleri içerir.

Sayfalandırma Testi

Bu sürümde yeni bir yapı var: paging-testing. Bu yapı, uygulamanızın her katmanının birim testini ve Paging ile entegrasyonunu ayrı ayrı yapmaya yönelik API'ler sağlar.

Örneğin, bu ilk sürümde, normalde uçtan uca Paging entegrasyonunu simüle etmek için ihtiyaç duyacağınız Pager ve gerçek kullanıcı arayüzünden bağımsız olarak kendi özel PagingSource uygulamanızın davranışını doğrulamanıza olanak tanıyan bir TestPager sınıfı bulunur.

TestPager, sahte olarak kabul edilmelidir. Bu, Pager'in gerçek uygulamasını yansıtan ve PagingSource'yı test etmek için basitleştirilmiş bir API yüzeyi sağlayan bir test dublörüdür. Bu API'ler suspend API'leridir ve Android'de Kotlin eş yordamlarını test etme kılavuzunda açıklandığı gibi runTest içinde çalıştırılmalıdır.

Bu API'lerin kullanımına örnek olarak TestPager kullanacak şekilde yeniden düzenlenen room-paging testleri gösterilebilir.

API Değişiklikleri

  • LoadResult.Page.iterator() üzerinden LoadResult.Page.data üzerinde kolayca iterasyon yapmanızı sağlar. Bu, PagingSource.getRefreshKey yöntemine iletilen PagingState öğesinin pages özelliği gibi bir List<LoadResult.Page> verildiğinde Kotlin standart kitaplığı flatten yönteminin dolaylı olarak kullanılmasına olanak tanır. (Ie0718)

Sürüm 3.2.0-alpha02

10 Ağustos 2022

androidx.paging:paging-*:3.2.0-alpha02 yayınlandı. 3.2.0-alpha02 sürümü bu kayıtları içerir.

Yeni Özellikler

  • Paging artık PagingData sınıfından toplanan hata ayıklama bilgilerini göstermek için AsyncPagingDataDiffer veya PagingDataAdapter sınıfları aracılığıyla günlükler sağlar.
  • Günlükler, adb shell komutu adb shell setprop log.tag.Paging [DEBUG|VERBOSE]. ile etkinleştirilebilir(b/235527159).

Hata düzeltmeleri

  • paging-common:3.2.0-alpha01, paging-runtime:3.1.1 veya daha eski çalışma zamanı ile kullanılırken eksik PagingDataDiffer oluşturucu hatası düzeltildi.(b/235256201)

Sürüm 3.2.0-alpha01

1 Haziran 2022

androidx.paging:paging-*:3.2.0-alpha01 yayınlandı. 3.2.0-alpha01 sürümü şu commit'leri içerir.

API değişiklikleri

  • CoroutineDispatcher yerine CoroutineContext kabul eden PagingDataAdapter ve AsyncPagingDataDiffer için oluşturucular eklendi. (Idc878)
  • Varsayılan olarak, PagingData.from() ve PagingData.empty() artık sunucu tarafında CombinedLoadStates özelliğini etkilemeyecek. sourceLoadStates ve remoteLoadStates değerlerinin bu oluşturuculara iletilmesine olanak tanıyan yeni bir aşırı yükleme, LoadStates değerinin tamamen sonlandırıcı olarak ayarlanmasıyla ilgili mevcut davranışı korumak için eklendi (ör. NotLoading(endOfPaginationReached = false)) ve gerekirse uzak durumları da dahil etme seçeneği sunar. LoadStates geçilmezse sunum yapan taraf, statik PagingData'yi aldığında önceki CombinedLoadStates korunur. (Ic3ce5, b/205344028)

Hata Düzeltmeleri

  • PagingSource.getRefreshKey() işlevinin sonucu, null değer döndüreceği ancak null olmayan bir initialKey değerinin ayarlandığı durumlarda artık initialKey işlevine göre doğru şekilde önceliklendiriliyor. (Ic9542, b/230391606)

Harici Katkı

  • test-coroutines-lib taşıma işlemi nedeniyle :compose:ui:ui-test API'si (updateApi) güncellendi (I3366d)

Sürüm 3.1

Sürüm 3.1.1

9 Mart 2022

androidx.paging:paging-*:3.1.1 yayınlandı. 3.1.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • .cachedIn() tarafından yanlışlıkla eklenen, nesiller arasındaki ara LoadState.NotLoading etkinlikleri kaldırıldı. Bu değişiklik, başarısız yüklemeleri yeniden denerken, yenilerken veya geçersiz kılarken üretilen gereksiz LoadState.NotLoading etkinliklerini kaldırarak LoadState değişikliklerine tepki vermeyi çok daha kolay hale getirir.

Sürüm 3.1.0

17 Kasım 2021

androidx.paging:paging-*:3.1.0 yayınlandı. 3.1.0 sürümü bu commit'leri içerir.

3.0.0 sürümünden sonra yapılan önemli değişiklikler

  • Flow<PagingData>.observable ve Flow<PagingData>.flowable API'leri artık deneysel değil
  • LoadState ile ilgili davranış değişiklikleri:
    • endOfPaginationReached artık hem PagingSource hem de RemoteMediator için her zaman false (LoadType.REFRESH)
    • Sayfalandırma özelliğindeki LoadStates, artık aşağı akışa yayınlanmadan önce hem PagingSource hem de RemoteMediator için geçerli değerleri bekliyor. PagingData'ın yeni nesilleri artık yenileme durumu için her zaman doğru şekilde Loading ile başlayacak ve bazı durumlarda yanlışlıkla NotLoading'a sıfırlanmayacak.
    • Sunucu API'lerindeki .loadStateFlow ve .addLoadStateListener, artık her zaman null olarak ayarlanmış aracı durumlarına sahip ilk CombinedLoadStates değerini gereksiz yere göndermiyor.
  • Geçmiş nesillerdeki iptal işlemi artık geçersiz kılma / yeni nesillerde hemen gerçekleşir. Flow<PagingData> üzerinde .collectLatest kullanmak artık zorunlu olmasa da kullanmanız önerilir.
  • PagingSource.LoadResult.Invalid, PagingSource.load için yeni bir dönüş türü olarak eklendi. Bu nedenle, Sayfalandırma bu PagingSource için bekleyen veya gelecekteki yükleme isteklerini siler ve geçersiz kılar. Bu dönüş türü, veritabanından veya ağdan döndürülebilecek geçersiz ya da eski verileri işlemek için tasarlanmıştır.
  • Kullanıcı arayüzünde sayfalar sunulurken eşzamanlı olarak tetiklenen .onPagesPresented ve .addOnPagesUpdatedListener sunucu API'leri eklendi. Sayfa güncellemeleri aşağıdaki senaryolarda gerçekleşebilir:
    • Yeni nesil PagingData'nın ilk yüklemesi, yeni nesilde sunulan öğelerde herhangi bir değişiklik olup olmadığına bakılmaksızın tamamlanır. Örneğin: Liste tamamen aynı olduğu için güncelleme olmadan ilk yüklemeyi tamamlayan yeni bir nesil de bu geri çağırmayı tetikler.
    • Eklenen sayfada yeni öğe olmasa bile sayfa eklenir.
    • Bırakılan sayfa boş olsa bile bir sayfa bırakılır.

Sürüm 3.1.0-rc01

3 Kasım 2021

androidx.paging:paging-*:3.1.0-rc01 yayınlandı. 3.1.0-rc01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Gözlemci yokken veya bir gözlemci yeni bir PagingData'ya geçiş yaparken Paging tarafından birden fazla yükleme etkinliği gönderildiği durumlarda .cachedIn()'deki yarışma durumu ve bellek sızıntısı düzeltildi. (Ib682e)

Sürüm 3.1.0-beta01

13 Ekim 2021

androidx.paging:paging-*:3.1.0-beta01 yayınlandı. 3.1.0-beta01 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Öğelere çok hızlı bir şekilde erişildiğinde, prefetchDistance'ta değerlendirilmek üzere bırakılmalarına ve sayfa yüklemelerinin durmasına neden olan bir sorun düzeltildi. Bu durum, özellikle birçok öğe aynı anda kullanıcının kaydırma yönüne göre yüklemeye öncelik verecek şekilde düzenlendiğinde sorun teşkil eder. Bu öğe erişimleri artık arabelleğe alınır ve bırakılmalarını önlemek için eşzamanlı olarak önceliklendirilir. (aosp/1833273)

Sürüm 3.1.0-alpha04

29 Eylül 2021

androidx.paging:paging-*:3.1.0-alpha04 yayınlandı. 3.1.0-alpha04 sürümü şu taahhütleri içerir:

API değişiklikleri

  • Flow<PagingData>.observable ve Flow<PagingData>.flowable API'leri artık deneysel değildir. (Ie0bdd)

Hata düzeltmeleri

  • LoadStates için endOfPaginationReached artık her zaman LoadType.REFRESH için false. Daha önce, RemoteMediator REFRESH için endOfPaginationReached true olabiliyordu ancak PagingSource için bu mümkün değildi. Bu davranış artık her zaman false döndürecek şekilde birleştirildi. REFRESH'in sonlandırıcı olması hiçbir zaman mantıklı olmadığından bu durum artık LoadStates'teki API sözleşmesinin bir parçası olarak belgeleniyor. Sayfalandırmanın sonlandırılıp sonlandırılmayacağına karar verirken her zaman APPEND veya PREPEND yönlerini dikkate almalısınız. (I047b6)
  • Sayfalandırma'daki LoadStates artık nesiller arasında aşağı akışa yayın yapmadan önce hem PagingSource hem de RemoteMediator'dan geçerli değerler bekliyor. Bu sayede, yeni PagingData nesillerinin, zaten Loading durumundaysa CombinedLoadStates.source.refresh içinde NotLoading göndermesi önlenir. Yeni PagingData nesilleri artık bazı durumlarda yanlış bir şekilde NotLoading olarak sıfırlanmak yerine her zaman doğru bir şekilde yenileme durumu için Loading ile başlar.

    Önceki nesillerin iptali artık geçersiz kılma/yeni nesillerde hemen gerçekleşir. Flow<PagingData> üzerinde .collectLatest kullanmak artık zorunlu olmasa da bu işlemi yapmanız hâlâ önemle tavsiye edilir. (I0b2b5, b/177351336, b/195028524)

  • .loadStateFlow ve .addLoadStateListener sunucu API'lerinde artık her zaman null olarak ayarlanan aracı durumları ve NotLoading(endOfPaginationReached = false) olarak ayarlanan kaynak durumları içeren bir ilk CombinedLoadStates gereksiz yere gönderilmiyor. Bunun anlamı:

    1. RemoteMediator kullanıyorsanız aracı durumları her zaman doldurulur.
    2. .loadStateFlow üzerinde yeni bir loadState işleyici veya yeni bir toplayıcı kaydetmek, PagingData kaynağından gerçek bir CombinedLoadStates almadıysa artık mevcut değeri hemen yayınlamayacak. Bu durum, bir toplayıcı veya dinleyici PagingData gönderilmeden önce başlatılırsa meydana gelebilir. (I1a748)

Sürüm 3.1.0-alpha03

21 Temmuz 2021

androidx.paging:paging-*:3.1.0-alpha03 yayınlandı. 3.1.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • PagingSource'a üçüncü bir LoadResult dönüş türü LoadResult.Invalid eklendi. PagingSource.load, LoadResult.Invalid değerini döndürdüğünde sayfalama, yüklenen verileri siler ve PagingSource'u geçersiz kılar. Bu dönüş türü, veritabanından veya ağdan döndürülebilecek geçersiz ya da eski verileri işlemek için tasarlanmıştır.

    Örneğin, temel veritabanına yazma işlemi yapılıyorsa ancak PagingSource zamanında geçersiz kılınmıyorsa, yüklediği destekleyici veri kümesinin değişmezliğine bağlı bir uygulama varsa (ör. LIMIT OFFSET tarzı veritabanı uygulamaları) tutarsız sonuçlar döndürebilir. Bu senaryoda, yüklemeden sonra geçersiz kılma işleminin kontrol edilmesi ve LoadResult.Invalid değerinin döndürülmesi önerilir. Bu değer, Sayfalandırma'nın bu PagingSource'a yönelik bekleyen veya gelecekteki tüm yükleme isteklerini silmesine ve PagingSource'u geçersiz kılmasına neden olur.

    Bu dönüş türü, LivePagedList veya RxPagedList'ten yararlanan Paging2 API tarafından da desteklenir. Paging2'nin PagedList API'leriyle bir PagingSource kullanıldığında PagedList hemen ayrılır. Bu PagedList'e veri yükleme girişimleri durdurulur ve PagingSource'da geçersiz kılma tetiklenir.

    LoadResult, kapalı bir sınıftır. Bu, kaynakla uyumlu olmayan bir değişikliktir. PagingSource.load sonuçlarını doğrudan kullanan kullanım alanlarının, derleme zamanında LoadResult.Invalid'i işlemesi gerekir. Örneğin, dönüş türünü kontrol etmek için exhaustive-when kullanan Kotlin kullanıcılarının Invalid türü için bir kontrol eklemesi gerekir. (Id6bd3, b/191806126, b/192013267)

Hata düzeltmeleri

  • PagingSource.registerInvalidatedCallback veya DataSource.addInvalidatedCallback aracılığıyla eklenen geçersiz kılma geri çağırmaları, geçersiz kılınmış bir PagingSource / DataSource üzerinde kaydedildiyse artık otomatik olarak tetikleniyor. Bu sayede, ilk yükleme sırasında geçersiz olan bir kaynak sağlandığında Sayfalandırma işleminin geçersiz kılma sinyallerini bırakmasına ve takılmasına neden olan yarışma durumu çözülür. Ayrıca, geçersiz kılma geri çağırmaları, en fazla bir kez çağrılmaları garanti edildiğinden tetiklendikten sonra düzgün bir şekilde kaldırılır. (I27e69)
  • Yeni örneklendirilmiş bir PagedList akışından (ör. LivePagedListBuilder veya RxPagedListBuilder) yer tutucu başlangıç değerini (InitialPagedList) göndermek, daha önce yüklenen verileri artık temizlemeyecek.

Sürüm 3.1.0-alpha02

1 Temmuz 2021

androidx.paging:paging-*:3.1.0-alpha02 yayınlandı. 3.1.0-alpha02 sürümü şu commit'leri içerir.

Yeni özellikler

  • Sunulan sayfalar kullanıcı arayüzünde güncellendikten hemen sonra tetiklenen onPagesPresented işleyicisi ve akış sunucusu API'leri eklendi.

    Bu güncellemeler kullanıcı arayüzüyle eşzamanlı olduğundan, güncelleme uygulandıktan sonra durumu incelemek için .snapshot, .getItemCount gibi bağdaştırıcı yöntemlerini çağırabilirsiniz. Her güncellemede yapılması maliyetli olabileceğinden .snapshot() yönteminin açıkça çağrılması gerektiğini unutmayın.

    Sayfa güncellemeleri aşağıdaki senaryolarda gerçekleşebilir:

    • Yeni nesil PagingData'nın ilk yüklemesi, yeni nesilde sunulan öğelerde herhangi bir değişiklik olup olmadığına bakılmaksızın tamamlanır. Örneğin: Liste tamamen aynı olduğu için güncelleme olmadan ilk yüklemeyi tamamlayan yeni bir nesil, bu geri çağırmayı tetiklemeye devam eder.
    • Eklenen sayfa yeni öğeler içermese bile sayfa eklenir.
    • Bırakılan sayfa boş olsa bile sayfa bırakılır (I272c9, b/189999634).

Hata Düzeltmeleri

  • LivePagedList veya RxPagedList tarafından üretilen ilk değerden PagedList.dataSource'a erişildiğinde artık yanlışlıkla IllegalStateException hatası verilmeyecek (I96707).

Sürüm 3.1.0-alpha01

2 Haziran 2021

androidx.paging:paging-*:3.1.0-alpha01 yayınlandı. 3.1.0-alpha01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • paging-rxjava3 tarafından sağlanan sınıflar artık paging-rxjava2 ile çakışmaması için androidx.paging.rxjava3 paketinde yer alıyor (Ifa7f6)

Hata Düzeltmeleri

  • Sayfalandırma'nın bazen RecyclerView'a işlemsiz farklılık etkinlikleri göndermesine ve bunun da belirli işleyicilerin erken tetiklenmesine neden olabilmesine yol açan sorun düzeltildi. (Ic507f, b/182510751)

Harici Katkı

  • rxjava3 yapay ürününe kullanımdan kaldırılan PagedList uyumluluk API'leri eklendi (Id1ce2, b/182497591)

Paging Compose Version 1.0.0

Sürüm 1.0.0-alpha20

24 Mayıs 2023

androidx.paging:paging-compose:1.0.0-alpha20 yayınlandı. 1.0.0-alpha20 sürümü bu commit'leri içerir.

Yeni özellikler

  • Paging Compose artık bir PagingData.from(fakeData) oluşturup bu PagingData öğesini bir MutableStateFlow (ör. MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) içine sarmalayarak sahte verilerden oluşan bir listenin önizlemesini destekliyor. Bu verileri @Preview öğenizin girişi olarak kullandığınızda collectAsLazyPagingItems() çağrıları, önizlenebilir LazyPagingItems sağlar. (I8a78d, b/194544557)

Hata düzeltmeleri

  • LazyPagingItems içinde toplanan pager.flow.cachedIn önbelleğe alınmış verileri, durum geri yükleme işleminden sonra eşzamansız toplama gerekmeden hemen kullanılabilir. Bu sayede, durum geri yüklendikten sonra ilk oluşturma işleminde önbelleğe alınan veriler hemen sunulmaya hazır olur. (I97a60, b/177245496)

Sürüm 1.0.0-alpha19

3 Mayıs 2023

androidx.paging:paging-compose:1.0.0-alpha19 yayınlandı. 1.0.0-alpha19 sürümü bu kayıtları içerir.

Tüm geç yüklenen düzenleri destekleme

Daha önce Paging Compose, LazyListScope üzerinde özel items ve itemsIndexed uzantıları sağlıyordu. Bu nedenle, Paging Compose'u LazyVerticalGrid, HorizontalPager gibi diğer geç yüklenen düzenlerle veya Wear ve TV kitaplıkları tarafından sağlanan diğer özel geç yüklenen bileşenlerle kullanamıyordunuz. Bu esnek olmama durumunu ele almak, bu sürümdeki temel güncellemedir.

Daha fazla geç yüklenen düzeni desteklemek için API'leri farklı bir katmanda oluşturmamız gerekiyordu. Paging Compose, her geç yüklenen düzen için özel bir items API'si sağlamak yerine artık itemKey ve itemContentType'deki LazyPagingItems için biraz daha düşük seviyeli uzantı yöntemleri sağlıyor. Bu API'ler, LazyColumn ve LazyVerticalGrid için mevcut olan standart items API'lerine key ve contentType parametrelerini uygulamanıza yardımcı olmaya odaklanır. Ayrıca HorizontalPager gibi API'lerdeki eşdeğerlerini de uygulamanıza yardımcı olur. (Ifa13b, Ib04f0, b/259385813)

Yani LazyVerticalGrid desteği şu şekilde görünür:

// This part is unchanged
val lazyPagingItems = pager.collectAsLazyPagingItems()

LazyVerticalGrid(columns = GridCells.Fixed(2)) {
  // Here we use the standard items API
  items(
    count = lazyPagingItems.itemCount,
    // Here we use the new itemKey extension on LazyPagingItems to
    // handle placeholders automatically, ensuring you only need to provide
    // keys for real items
    key = lazyPagingItems.itemKey { it.uniqueId },
    // Similarly, itemContentType lets you set a custom content type for each item
    contentType = lazyPagingItems.itemContentType { "contentType" }
  ) { index ->
    // As the standard items call provides only the index, we get the item
    // directly from our lazyPagingItems
    val item = lazyPagingItems[index]
    PagingItem(item = item)
  }
}

Bu yeni API'lerin kullanımıyla ilgili daha fazla örnek için lütfen örneklerimizi inceleyin.

Bu değişiklikler, LazyColumn ve LazyRow örneklerini birkaç satır daha uzun hale getirse de Paging Compose'u kullanacak olanlar için tüm tembel düzenlerde tutarlılığın önemli bir faktör olduğunu düşündük. Bu nedenle, LazyListScope için mevcut uzantıların desteği sonlandırıldı. (I0c459, I92c8f, b/276989796)

API Değişiklikleri

  • Yeni API'lere geçişi kolaylaştırmak için LazyListScope üzerindeki items ve itemsIndexed uzantı işlevleri artık yeni API'lerdeki desteği yansıtan bir contentType parametresini destekliyor. (Ib1918, b/255283378)

Bağımlılık Güncellemeleri

  • Paging Compose, bağımlılığını Compose 1.0.5'ten Compose 1.2.1'e güncelledi. (Ib1918, b/255283378)

Sürüm 1.0.0-alpha18

8 Şubat 2023

androidx.paging:paging-compose:1.0.0-alpha18 değişiklik yapılmadan yayınlanır. 1.0.0-alpha18 sürümü bu kayıtları içerir.

Sürüm 1.0.0-alpha17

24 Ekim 2022

androidx.paging:paging-compose:1.0.0-alpha17 yayınlandı. 1.0.0-alpha17 sürümü şu commit'leri içerir.

Yeni özellikler

Sürüm 1.0.0-alpha16

10 Ağustos 2022

androidx.paging:paging-compose:1.0.0-alpha16 yayınlandı. 1.0.0-alpha16 sürümü bu kayıtları içerir.

Yeni Özellikler

  • Sayfalandırma artık PagingData'dan toplanan hata ayıklama bilgilerini göstermek için LazyPagingItems sınıfı aracılığıyla günlükler sağlar.
  • Günlükler, adb shell komutu adb shell setprop log.tag.Paging [DEBUG|VERBOSE] aracılığıyla etkinleştirilebilir. ([b/235527159}(https://issuetracker.google.com/issues/235527159))

Hata Düzeltmeleri

  • paging-compose:1.0.0-alpha15, paging-common:3.1.1 veya daha eski sürümlerle kullanıldığında ortaya çıkan eksik PagingDataDiffer oluşturucu hatası düzeltildi.(b/235256201,b/239868768)

Sürüm 1.0.0-alpha15

1 Haziran 2022

androidx.paging:paging-compose:1.0.0-alpha15 yayınlandı. 1.0.0-alpha15 sürümü şu taahhütleri içerir:

API değişiklikleri

  • PagingDataAdapter ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden oluşturucular eklendi. (Idc878)

Hata düzeltmeleri

  • LazyPagingItems artık ilk loadState değerini LoadState.Loading yenileme olarak ayarlıyor. (I55043, b/224855902)

Sürüm 1.0.0-alpha14

13 Ekim 2021

androidx.paging:paging-compose:1.0.0-alpha14 yayınlandı. 1.0.0-alpha14 sürümü bu kayıtları içerir.

Sürüm 1.0.0-alpha13

29 Eylül 2021

androidx.paging:paging-compose:1.0.0-alpha13 yayınlandı. 1.0.0-alpha13 sürümü şu commit'leri içerir.

API Değişiklikleri

  • LazyPagingItems.snapshot() işlevi, LazyPagingItems.itemSnapshotList özelliğiyle (Ie2da8) değiştirildi.
  • Desteği sonlandırılan LazyPagingItems.getAsState() kaldırıldı (Ie65e4)

Sürüm 1.0.0-alpha12

21 Temmuz 2021

androidx.paging:paging-compose:1.0.0-alpha12 yayınlandı. 1.0.0-alpha12 sürümü bu kayıtları içerir.

API değişiklikleri

  • Sayfalandırma'yı LazyColumn/Row ile bağlamak için kullanılan items(lazyPagingItems) ve itemsIndexed(lazyPagingItems), artık öğeyi temsil eden sabit bir anahtar belirtmenize olanak tanıyan anahtar parametresini kabul ediyor. Anahtarlar hakkında daha fazla bilgiyi burada bulabilirsiniz. (I7986d)
  • lazyPagingItems.getAsState(index) işlevi artık kullanımdan kaldırıldı. Bunun yerine lazyPagingItems[index] politikasını kullanın. (I086cb, b/187339372)

Sürüm 1.0.0-alpha11

30 Haziran 2021

androidx.paging:paging-compose:1.0.0-alpha11 yayınlandı. 1.0.0-alpha11 sürümü bu kayıtları içerir.

Sürüm 1.0.0-alpha10

2 Haziran 2021

androidx.paging:paging-compose:1.0.0-alpha10 yayınlandı. 1.0.0-alpha10 sürümü bu kayıtları içerir.

Sürüm 1.0.0-alpha09

18 Mayıs 2021

androidx.paging:paging-compose:1.0.0-alpha09 yayınlandı. 1.0.0-alpha09 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • LazyPagingItems'ın itemCount ve item getter özellikleri artık gözlemlenebilir. Bu sayede LazyVerticalGrid ile de kullanılabilir (Ie2446, b/171872064, b/168285687).

Oluşturma Uyumluluğu

  • androidx.paging:paging-compose:1.0.0-alpha09 yalnızca Compose 1.0.0-beta07 ve sonraki sürümlerle uyumludur.

Sürüm 1.0.0-alpha08

24 Şubat 2021

androidx.paging:paging-compose:1.0.0-alpha08 yayınlandı. 1.0.0-alpha08 sürümü şu commit'leri içerir.

Compose 1.0.0-beta01 ile entegre olacak şekilde güncellendi.

Sürüm 1.0.0-alpha07

10 Şubat 2021

androidx.paging:paging-compose:1.0.0-alpha07 yayınlandı. 1.0.0-alpha07 sürümü şu commit'leri içerir.

Compose alpha12 ile entegre olacak şekilde güncellendi.

Sürüm 1.0.0-alpha06

28 Ocak 2021

androidx.paging:paging-compose:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü şu taahhütleri içerir:

Hata düzeltmeleri

Compose 1.0.0-alpha11'e bağlı olacak şekilde güncellendi.

Sürüm 1.0.0-alpha05

13 Ocak 2021

androidx.paging:paging-compose:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu kayıtları içerir.

Compose 1.0.0-alpha10'a bağlı olacak şekilde güncellendi.

Sürüm 1.0.0-alpha04

16 Aralık 2020

androidx.paging:paging-compose:1.0.0-alpha04 yayınlandı. 1.0.0-alpha04 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • CombinedLoadStates.refresh, CombinedLoadStates.prepend, CombinedLoadStates.append kolaylık özellikleri, hem uyumlulaştırıcı hem de kaynak yükleme durumları NotLoading olduktan sonra yalnızca Loading durumundan NotLoading durumuna geçecek şekilde güncellendi. Böylece, uzaktan güncellemenin uygulandığından emin olunur. (I65619)

Sürüm 1.0.0-alpha03

2 Aralık 2020

androidx.paging:paging-compose:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü şu commit'leri içerir.

  • Compose 1.0.0-alpha08 ile uyumlu olacak şekilde güncellendi.

Sürüm 1.0.0-alpha02

11 Kasım 2020

androidx.paging:paging-compose:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • AsyncPagingDataDiffer / PagingDataAdapter içinde mevcut olan aynı işlevi sunan LazyPagingItems'ye .peek(), .snapshot(), .retry() ve .refresh() yöntemleri eklendi (Iddfe8, b/172041660)

Sürüm 1.0.0-alpha01

28 Ekim 2020

androidx.paging:paging-compose:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü şu commit'leri içerir.

Yeni özellikler

paging-compose yapısı, Paging kitaplığı ile Jetpack Compose arasında entegrasyon sağlar. Basit bir kullanım örneği:

  @Composable
  @OptIn(ExperimentalLazyDsl::class)
  fun ItemsDemo(flow: Flow<PagingData<String>>) {
      val lazyPagingItems = flow.collectAsLazyPagingItems()
      LazyColumn {
          items(lazyPagingItems) {
              Text("Item is $it")
          }
      }
  }

Sürüm 3.0.1

Sürüm 3.0.1

21 Temmuz 2021

androidx.paging:paging-*:3.0.1 yayınlandı. 3.0.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • LivePagedList veya RxPagedList tarafından üretilen başlangıç değerinden PagedList.dataSource'a erişildiğinde artık yanlışlıkla IllegalStateException (I96707) hatası verilmeyecek.

Sürüm 3.0.0

Sürüm 3.0.0

5 Mayıs 2021

androidx.paging:paging-*:3.0.0 yayınlandı. 3.0.0 sürümü şu commit'leri içerir.

3.0.0 sürümünün önemli özellikleri

Paging 2.x.x'teki mevcut API'lerin çoğu, aşağıdaki iyileştirmeleri sunan yeni Paging 3 API'leri lehine kullanımdan kaldırıldı:

  • Kotlin eş yordamları ve Flow için birinci sınıf destek
  • İptal için destek
  • Yerleşik yükleme durumu ve hata sinyalleri
  • Yeniden deneme ve yenileme işlevi
  • Üç DataSource alt sınıfı, birleştirilmiş bir PagingSource sınıfında birleştirildi.
  • Ayırıcı eklemek için yerleşik bir dönüşüm de dahil olmak üzere özel sayfa dönüşümleri
  • Yükleme durumu üstbilgileri ve altbilgileri

Sürüm 3.0.0-rc01

21 Nisan 2021

androidx.paging:paging-*:3.0.0-rc01 yayınlandı. 3.0.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Sayfalandırma'nın bazen RecyclerView'a işlemsiz farklılık etkinlikleri göndermesine ve bunun da belirli işleyicilerin erken tetiklenmesine neden olabilmesine yol açan sorun düzeltildi. (Ic507f, b/182510751)

Sürüm 3.0.0-beta03

24 Mart 2021

androidx.paging:paging-*:3.0.0-beta03 yayınlandı. 3.0.0-beta03 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Liste yeniden yüklendiğinde yer tutucuların işlenme şeklini, RecyclerView'da beklenmedik atlamaları önleyecek şekilde yeniledik. Ayrıntılar için NullPaddedDiffing.md sayfasına bakın. (If1490, b/170027529, b/177338149)
  • Çeşitli PagedList oluşturucular (eski uyumluluk yolu), .build() çağrıldığında artık ana iş parçacığında DataSource.Factory.create()'yı yanlışlıkla eşzamanlı olarak çağırmıyor. (b/182798948)

Sürüm 3.0.0-beta02

10 Mart 2021

androidx.paging:paging-*:3.0.0-beta02 yayınlandı. 3.0.0-beta02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Rx3 uzantıları artık @ExperimentalCoroutinesApi etkinleştirme şartını doğru şekilde uyguluyor. Daha önce @get yönteminde işaretlenmişlerdi. Bu yöntem, https://youtrack.jetbrains.com/issue/KT-45227 (I5733c) nedeniyle Kotlin derleyicisi tarafından yoksayılır.

Hata düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımına kısıtlamalar getirin (I6aa29, b/174531520)
  • Uzaktan yenileme çağrıldığında PagingState değerinin her zaman null olmasına neden olan hata düzeltildi.
  • PagingSource tarafından döndürülen boş sayfaların, Sayfalandırma'nın prefetchDistance değerini karşılamak için tekrar getirmesini engelleyerek Sayfalandırma'nın "takılmasına" neden olan bir hata düzeltildi.

Sürüm 3.0.0-beta01

10 Şubat 2021

androidx.paging:paging-*:3.0.0-beta01 yayınlandı. 3.0.0-beta01 sürümü şu commit'leri içerir.

API değişiklikleri

  • Rx2 ve Rx3 sarmalayıcıları artık bağlı olduğu deneysel ek açıklamayı gösteriyor. paging-rxjava2 veya paging-rxjava3'te Rx uyumluluk sarmalayıcılarını kullanıyorsanız artık kullanımlara @OptIn(ExperimentalCoroutinesApi::class) ile ek açıklama eklemeniz gerekir (Ib1f9d).

Hata Düzeltmeleri

  • Uyumluluk yolları üzerinden v2 DataSource API'leri kullanılırken bazen ortaya çıkan IndexOutOfBoundsException: Inconsistency detected hatası düzeltildi.
  • Uyumluluk yolları üzerinden kullanıldığında DataSource başlatılırken yapılan isInvalid çağrısı artık ana iş parçacığı yerine fetchDispatcher'da doğru şekilde başlatılıyor. Bu düzeltme, Room'un PagingSource uygulaması kullanılırken ana iş parçacığında veritabanı erişimi nedeniyle oluşan IllegalStateException sorununu giderir.

Sürüm 3.0.0-alpha13

27 Ocak 2021

androidx.paging:paging-*:3.0.0-alpha13 yayınlandı. 3.0.0-alpha13 sürümü şu commit'leri içerir.

API Değişiklikleri

  • PagingSource.getRefreshKey artık isteğe bağlı bir işlev değildir. Varsayılan bir uygulama olmadan soyut bir işlev olarak kullanılabilir. Kullanıcıları taşıyanlar, yalnızca null değerini döndüren varsayılan uygulamayı döndürmeye devam edebilir. Ancak getRefreshKey(), kullanıcının mevcut kaydırma konumuna göre bir anahtar döndüren gerçek bir uygulamaya sahip olmalıdır. Bu anahtar, mümkünse PagingState.anchorPosition aracılığıyla Sayfalandırma işleminin, görüntü alanı etrafında ortalanmış şekilde yüklenmeye devam etmesini sağlar. (I4339a)
  • InvalidatingPagingSourceFactory artık nihai bir sınıf (Ia3b0a)
  • İsteğe bağlı ek bir SeparatorType parametresiyle terminal ayırıcı (başlık / altbilgi) davranışının yapılandırılmasına izin verilir. İki seçenek şunlardır:
    • FULLY_COMPLETE: Mevcut davranış. Terminal ayırıcıları eklemeden önce hem PagingSource hem de RemoteMediator'ın endOfPaginationReached değerini işaretlemesini bekleyin. RemoteMediator kullanılmıyorsa uzak loadState yoksayılır. Bu, özellikle bölüm ayırıcıları yalnızca bölüm tamamen yüklendiğinde (ör. ağ gibi uzak kaynaktan getirme dahil) göstermek istiyorsanız kullanışlıdır.
    • SOURCE_COMPLETE - RemoteMediator kullanılsa bile yalnızca PagingSource'un endOfPaginationReached'ı işaretlemesini bekleyin. Bu sayede, üstbilgiler ve altbilgiler ilk yüklemeyle eşzamanlı olarak sunulur. Böylece kullanıcıların, terminal ayırıcıları görmek için sayfayı kaydırması gerekmez. (Ibe993, b/174700218)

Hata Düzeltmeleri

  • PageFetcher, PagingSource'tan yüklemeye başlamadan önce PagingSource geçersiz kılındığında ortaya çıkan nadir bir bellek sızıntısı düzeltildi. (I9606b, b/174625633)

Sürüm 3.0.0-alpha12

13 Ocak 2021

androidx.paging:paging-*:3.0.0-alpha12 yayınlandı. 3.0.0-alpha12 sürümü şu commit'leri içerir.

API Değişiklikleri

  • InvalidatingPagingSourceFactory, hiçbir zaman soyut yöntemi olmadığı için artık soyut sınıf değil. (I4a8c4)
  • Java kullanıcıları için Lifecycle veya CoroutineScope yerine ViewModel'i kabul eden bir .cachedIn() aşırı yüklemesi eklendi. (I97d81, b/175332619)
  • Dönüştürme operatörü bağımsız değişkenlerine bir Executor kabul ederek Java çağrıcılarının PagingData dönüştürme işlemlerini eşzamansız olarak kullanmasına izin verin. Tüm -Sync dönüştürme operatörlerinin -Sync son eki kaldırıldı. Kotlin Coroutine kullanıcılarının, askıya alma bloğunu kabul eden uzantı işlevini çağırarak anlam belirsizliğini gidermesi gerekir. Tüm PagingData dönüşüm operatörleri, statik PagingDataTransforms sınıfı altındaki uzantılara taşındı. Java kullanıcılarının bunları statik yardımcılar aracılığıyla çağırması gerekir. Örneğin: PagingDataTransforms.map(pagingData, transform) Kotlin kullanıcıları için söz dizimi aynıdır ancak işlevi içe aktarmanız gerekir. (If6885, b/172895919)

Hata düzeltmeleri

  • Sayfalandırmanın sonuna ulaşıldığında adapter.refresh() sırasında RemoteMediator.load() işlevinin çağrılmamasına neden olan hata düzeltildi.

Sürüm 3.0.0-alpha11

16 Aralık 2020

androidx.paging:paging-*:3.0.0-alpha11 yayınlandı. 3.0.0-alpha11 sürümü bu kayıtları içerir.

Yeni Özellikler

  • Aşağıdaki temel kullanım alanları için kaydedilmiş durum desteği eklendi (özellikle katmanlı kaynak durumunda tam destek için çalışmalar devam etmektedir):
    • Akış önbelleğe alınır ve uygulama sonlandırılmaz (ör. akış bir görünüm modelinde önbelleğe alınır ve etkinlik süreç içinde yeniden oluşturulur)
    • sayfalama kaynağı sayılır, yer tutucular etkinleştirilir ve düzen kademeli değildir.

API değişiklikleri

  • PagingSource.getRefreshKey() artık kararlı API (I22f6f, b/173530980)
  • PagingSource.invalidate artık açık bir işlev değil. Geçersiz kılma işlemi gerçekleştiğinde bildirim almanız gerekiyorsa geçersiz kılma yöntemini geçersiz kılmak yerine registerInvalidatedCallback yöntemini çağırabilirsiniz. (I628d9, b/173029013, b/137971356)
  • Pager artık deneysel API'leri etkinleştirme ek açıklaması aracılığıyla deneysel olmayan genel API'ye sızdırmak yerine, normal kurucularının yanı sıra tek bir deneysel kurucuya sahip. (I9dc61, b/174531520)
  • CombinedLoadStates.refresh, CombinedLoadStates.prepend, CombinedLoadStates.append kolaylık özellikleri, hem uyumlulaştırıcı hem de kaynak yükleme durumları NotLoading olduktan sonra yalnızca Loading durumundan NotLoading durumuna geçecek şekilde güncellendi. Böylece, uzaktan güncellemenin uygulandığından emin olunur. (I65619)
  • LoadParams.pageSize kaldırıldı (zaten kullanımdan kaldırılmıştı). PagingSource'unuzda LoadParams.loadSize kullanmanız önerilir.

    LoadParams.loadSize, ilk yükleme çağrısı dışında her zaman PagingConfig.pageSize değerine eşittir. İlk yükleme çağrısında ise PagingConfig.initialLoadSize değerine eşittir.

    Sayfalama veya PagedList kullanmadan Paging2 DataSource'unuzu test ediyorsanız pageSize, initialLoadSize değerini de ayarlıyorsanız PagingConfig.pageSize ile eşleşmeyebilir. Testleriniz için önemliyse bunun yerine, DataSource yükleme yöntemleriniz için doğru PageSize değerini dahili olarak ayarlayacak bir Pager/PagedList kullanmayı deneyin. (I98ac7, b/149157296)

Hata düzeltmeleri

  • PagingConfig.maxSize ayarlanmışken ayırıcılar kullanıldığında IllegalStateException nedeniyle oluşan kilitlenme düzeltildi. (I0ed33, b/174787528)
  • RemoteMediator ayarlandıysa PREPEND / APPEND için yükleme durumunun ilk yüklemeden hemen sonra NotLoading(endOfPaginationReached = true) olarak güncellenmemesine neden olan hata düzeltildi (I8cf5a).
  • .snapshot(), .peek() gibi sunucu tarafı API'lerinin, ListUpdateCallback güncellemelerinde önceki (güncel olmayan) listeyi döndürmesine neden olan hata düzeltildi.
  • Ayırıcı operatörlerinin RemoteMediator ile kullanıldığında üstbilgi veya altbilgi eklememesine neden olan hata düzeltildi.
  • LoadState'in RemoteMediator için NotLoading olarak güncellenmesinin Loading durumunda takılmasına neden olan hata düzeltildi.
  • Paging2.0 uyumluluk API'si .asPagingSourceFactory()'nin, destekleyici DataSource öğesinin yanlış CoroutineDispatcher'da başlatılmasına neden olabildiği bir hata düzeltildi. Bu, özellikle bu uyumluluk yolunu kullanan Room'un PagingSource'un mevcut uygulaması kullanılırken kilitlenmeyi ve olası ANR durumlarını çözer.

Sürüm 3.0.0-alpha10

2 Aralık 2020

androidx.paging:paging-*:3.0.0-alpha10 yayınlandı. 3.0.0-alpha10 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Desteği sonlandırılan dataRefreshFlow ve dataRefreshListener API'leri, loadStateFlow / Listener güncellemeleriyle gereksiz hale geldiği için kaldırıldı. Taşıma işlemi yapanlar için loadStateFlow eşdeğeri şudur:

    loadStateFlow.distinctUntilChangedBy { it.refresh }
        .filter { it.refresh is NotLoading }
    

    (Ib5570, b/173530908)

Hata Düzeltmeleri

  • RemoteMediator REFRESH için endOfPaginationReached artık LoadState güncellemelerine doğru şekilde yayılıyor ve uzak APPEND ile PREPEND öğelerinin tetiklenmesini engelliyor. (I94a3f, b/155290248)
  • Boş başlangıç sayfası veya yoğun filtreleme nedeniyle boş bir liste sunulması artık Sayfalandırma'nın PREPEND veya APPEND yüklemelerini başlatmasını engellemeyecek. (I3e702, b/168169730)
  • Geçersiz kılma işlemleri hızlı bir şekilde gerçekleştiğinde PagingSource'un sonraki nesillerinde getRefreshKey yönteminin çağrılmamasına neden olan sorun düzeltildi. (I45460, b/170027530)

Harici Katkı

  • Geçersiz kılma işlemini, oluşturduğu tüm PagingSource'lara yönlendiren bir .invalidate() API'si içeren yeni bir soyut sınıf InvalidatingPagingSourceFactory eklendi. @claraf3'e teşekkürler. (Ie71fc, b/160716447)

Bilinen Sorunlar

  • .insertSeparators() dönüşümünden gelen başlıklar ve altbilgiler, RemoteMediator b/172254056 kullanılırken hemen görünmeyebilir.
  • RemoteMediator kullanıldığında, geçersiz kılma ve PagingSource.load(LoadParams.Refresh(...)) işlemi RemoteMediator.load() döndürülmeden önce tamamlanırsa uzak LoadState takılabilir b/173717820

Sürüm 3.0.0-alpha09

11 Kasım 2020

androidx.paging:paging-*:3.0.0-alpha09 yayınlandı. 3.0.0-alpha09 sürümü şu commit'leri içerir.

API Değişiklikleri

  • dataRefreshFlow / Listener yöntemlerini replaceWith ifadesiyle tamamen kullanımdan kaldırın. (I6e2dd)

Hata düzeltmeleri

  • RemoteMediator ile ayırıcılar kullanılırken ve endOfPagination döndürecek bir uzaktan yükleme işlemi devam ederken geçersiz kılma tetiklendiğinde IllegalArgumentException hatasının oluşması sorunu düzeltildi (I3a260).

Sürüm 3.0.0-alpha08

28 Ekim 2020

androidx.paging:paging-*:3.0.0-alpha08 yayınlandı. 3.0.0-alpha08 sürümü bu kayıtları içerir.

API Değişiklikleri

  • DataSource.InvalidatedCallback işlevinin Kotlin / Java varyantları, Kotlin'de işlevsel arayüz aracılığıyla SAM dönüştürmeleri etkinleştirilerek birleştirildi (Kotlin 1.4'te kullanılabilir). Bu, .map veya .mapByPage tarafından dönüştürüldükten sonra geçersiz kılma geri çağırmalarının Kotlin varyantının çağrılmadığı bir hatayı da düzeltir. (I1f244, b/165313046)

Hata düzeltmeleri

  • Paging'in ViewPager ile etkileşimi önemli ölçüde iyileştirildi. Özellikle, Sayfalandırma artık sayfa geçersiz kılma nedeniyle RemoteMediator#load çağrısını iptal etmeyecek. Ayrıca, REFRESH isteği başarıyla tamamlanana kadar REFRESH gerekli olduğunda ekleme/ön ekleme yükleme isteği de göndermez. (I6390b, b/162252536)
  • MissingGetterMatchingBuilder için API lint kontrolü androidx'te etkinleştirildi (I4bbea, b/138602561)
  • RecyclerView'un arka plan iş parçacığından bildirim alması nedeniyle .withLoadState* ConcatAdapter yardımcılarının kilitlenmesine yol açan bir hata düzeltildi (I18bb5, b/170988309).
  • Boş olmayan çok küçük bir sayfa yüklendiğinde önceden getirmenin yüklemeleri doğru şekilde tetiklemesini bazen engelleyen bir hata düzeltildi.Iffda3 b/169259468

Sürüm 3.0.0-alpha07

1 Ekim 2020

androidx.paging:paging-*:3.0.0-alpha07 yayınlandı. 3.0.0-alpha07 sürümü bu kayıtları içerir.

API değişiklikleri

  • Async PagingData Guava tabanlı operatörler artık yürütme bağlamını kontrol etmek için parametre olarak bir Executor kabul ediyor. (Id4372)

Hata Düzeltmeleri

  • Yarış durumu nedeniyle RemoteMediator'da IndexOutOfBounds istisnasının atılması düzeltildi. (I00b7f, b/165821814)
  • DataSource -> PagingSource dönüşümünde, elde edilen PagingSource'un DataSource'tan gelen geçersiz kılma sinyallerini yoksaymasına neden olabilecek bir yarışma durumu düzeltildi.
  • Sayfa getirme mantığındaki, PagingDataAdapter.refresh() çağrılana kadar bazen PagingSource'un yeni nesillerini almasını engelleyen sorun düzeltildi.
  • PagingSource'a dönüştürülmüş bir DataSource (ör. Room tarafından üretilen) RemoteMediator ile birlikte kullanıldığında kaydırma konumunun bazen kaybolmasına neden olan sorun düzeltildi.

Harici Katkı

  • PagingData için RxJava2, RxJava3 ve Guava tabanlı eş zamansız dönüşüm operatörleri ekleyen @simonschiller'e teşekkür ederiz.

Sürüm 3.0.0-alpha06

2 Eylül 2020

androidx.paging:paging-*:3.0.0-alpha06 yayınlandı. 3.0.0-alpha06 sürümü bu kayıtları içerir.

API değişiklikleri

  • UnsupportedOperationException ile ilgili daha net mesajlar PagingDataAdapter.setHasStableIds çağrıldığında artık sabit kimlikler için destek eksikliği nedeniyle hata veriliyor. (Ib3890, b/158801427)

Hata Düzeltmeleri

  • insertSeparators artık boş sayfaları filtrelemiyor. Bu sayede, çok sayıda boş sayfa eklendiğinde bile sunucu, önceden getirme mesafesine uyabiliyor. (I9cff6, b/162538908)

Sürüm 3.0.0-alpha05

19 Ağustos 2020

androidx.paging:paging-*:3.0.0-alpha05 yayınlandı. 3.0.0-alpha05 sürümü bu kayıtları içerir.

Hata düzeltmeleri

  • Sayfalandırma özelliği, sunulan veriler yoğun şekilde filtrelenmiş olsa bile sayfaları artık doğru şekilde önceden getiriyor.
  • Yeniden denenen bir yüklemeye LoadResult.Error döndürülmesi, öğe erişimlerinin yeniden denemeyi yanlış şekilde tekrar tetiklemesine artık neden olmuyor.

Harici Katkı

  • Bazı testleri temizlemeye yardımcı olduğu için Clara F'ye teşekkür ederiz. (549612)

Sürüm 3.0.0-alpha04

5 Ağustos 2020

androidx.paging:paging-*:3.0.0-alpha04 yayınlandı. 3.0.0-alpha04 sürümü şu taahhütleri içerir:

API Değişiklikleri

  • Sayfa yüklemelerini tetiklemeden sunulan verilere erişime izin vermek için AsyncPagingDataDiffer ve PagingDataAdapter'ye peek() API'si eklendi. (I38898, b/159104197)
  • Gösterilen öğelerin sayfa getirme işlemi tetiklenmeden alınmasına olanak tanımak için snapshot() API'si PagingDataAdapter ve AsyncPagingDataDiffer'ye eklendi. (I566b6, b/159104197)
  • Statik listelerin sunulmasına olanak tanıyan bir PagingData.from(List<T>) oluşturucu eklendi.Bu oluşturucu, belirli durumlarda (ör. ilk REFRESH işlemi tamamlanmadan önce veya yalnızca dönüşümleri test etmek için) statik listeleri göstermek üzere genel PagingData akışıyla birleştirilebilir. (Id134d)
  • dataRefresh Flow / Listener API'leri, REFRESH'te sunulan öğelerin durumunu göstermek için tasarlanmıştı ancak loadState Flow / Listener geri çağırma zamanlaması ve itemCount özelliği iyileştirildiğinden bu API'ler artık gereksiz (Ia19f3)
  • PagingSource ve RemoteMediator için RxJava3 uyumluluk sarmalayıcıları eklendi (I49ef3, b/161480176)

Hata düzeltmeleri

  • toPagingSourceFactory yardımcı programı aracılığıyla PagingSource değerine dönüştürülen PositionalDataSource (Room tarafından oluşturulan PagingSource dahil), artık atlamayı desteklemek için kendilerini doğru şekilde işaretliyor. (I3e84c, b/162161201)
  • submitData'nın senkron varyantının kullanılması bazen yarışa yol açarak ClosedSendChannelException hatasına neden oluyordu (I4d702, b/160192222). Bu hata düzeltildi.

Harici Katkı

  • Slack adına RxJava3 uyumluluk sarmalayıcıları eklediği için Zac Sweers'a teşekkür ederiz. (I49ef3, b/161480176)

Sürüm 3.0.0-alpha03

22 Temmuz 2020

androidx.paging:paging-*:3.0.0-alpha03 yayınlandı. 3.0.0-alpha03 sürümü şu commit'leri içerir.

API değişiklikleri

  • PagingState için oluşturucu artık herkese açık olduğundan getRefreshKey() uygulamalarını test etmek daha kolay olacaktır (I8bf15).
  • Orijinal ve Kotlin varyantları arasındaki belirsizliği gidermek için DataSource Kotlin eşleme işlevi varyantları Java'dan gizlendi. (If7b23, b/161150011)
  • Kotlin kullanıcılarına kolaylık sağlamak için tasarlanan gereksiz API'ler @JvmSynthetic olarak işaretlendi (I56ae5).
  • LoadResult.Page'in oluşturucusu için aşırı yüklemeler eklendi. Bu aşırı yüklemelerde itemsBefore ve itemsAfter, varsayılan olarak COUNT_UNDEFINED değerini alır (I47849).
  • Mevcut PagingData operatörlerinin askıya alma yöntemlerini kabul etmesini sağlandı ve Java kullanıcıları için yeni mapSync, flatMapSync ve filterSync askıya alma dışı operatörleri kullanıma sunuldu. Mevcut dönüştürme yöntemleri uzantı işlevlerine taşındı. Bu nedenle, Kotlin kullanıcılarının artık bunları içe aktarması gerekiyor. (I34239, b/159983232)

Hata Düzeltmeleri

  • Room (ve PositionalDataSource) PagingSource'lar artık ilk sayfanın bir parçası olarak başta bir ayırıcı gösterecek. Böylece kullanıcının ayırıcıyı görmek için sayfayı kaydırması gerekmeyecek. (I6f747, b/160257628)
  • Yer tutuculardaki öğe erişimleri artık PagingData.filter() tarafından dönüştürüldükten sonra istenen dizini karşılayan bir sayfa döndürülene kadar PagingSource yüklemelerini doğru şekilde tetikliyor (I95625, b/158763195).
  • PagingSource bir hata döndürdükten sonra kaydırma yapıldığında bazen PagingDataAdapter.retry() yönteminin yeniden denemesini engelleyen hata düzeltildi. (I1084f, b/160194384)
  • Bir sayfa bırakıldıktan sonra öğe erişimlerinin, prefetchDistance içinde olmasına rağmen sayfaları yüklememesine neden olan sorun düzeltildi (Ie95ae, b/160038730).
  • PagingConfig.maxSize ayarı, bir bırakma etkinliğinden sonra yer tutucuları artık etkinleştirmez (I2be29, b/159667766)

Sürüm 3.0.0-alpha02

24 Haziran 2020

androidx.paging:paging-*:3.0.0-alpha02 yayınlandı. 3.0.0-alpha02 sürümü bu kayıtları içerir.

API değişiklikleri

  • PagingConfig oluşturucusu için yaygın varsayılan değerlere sahip aşırı yüklemeler eklendi (I39c50, b/158576040)
  • Ortak varsayılan değerlere (Ie91f5) sahip PagingDataAdapter ve AsyncPagingDataDiffer oluşturucuları için aşırı yüklemeler eklendi.
  • Bağdaştırıcı API'leri, dataRefreshFlow ve dataRefreshListener artık bir PagingData öğesinin boş olup olmadığını belirtmek için bir Boole değeri iletiyor (I6e37e, b/159054196).
  • RemoteMediator için RxJava ve Guava API'leri eklendi: RxRemoteMediator ve ListenableFutureRemoteMediator
  • isEmpty() ve firstItemOrNull() gibi yaygın öğe erişimi için PagingState'e yardımcılar eklendi (I3b5b6, b/158892717)

Hata Düzeltmeleri

  • Pager artık geçersiz PagingSource'ların yanlışlıkla yeniden kullanılmasını önlemek için fabrikada PagingSource'un yeniden kullanılıp kullanılmadığını kontrol ediyor. Bu durum, belirsiz bir hataya neden oluyordu (I99809, b/158486430).
  • RemoteMediator REFRESH'ten kaynaklanan hatalar artık PagingSource'un yüklenmesini engellemiyor (I38b1b, b/158892717)
  • submitData işlevinin askıya alınmayan sürümü, submitData işlevinin askıya alınan sürümünden sonra çağrıldığında birden fazla PagingData üzerinde eşzamanlı toplama nedeniyle artık kilitlenmeye neden olmuyor. (I26358, b/158048877)
  • Yapılandırma değişikliğinden sonra ortaya çıkabilen "sayfalayıcıdan iki kez toplanamıyor" istisnası düzeltildi (I58bcc, b/158784811).

Sürüm 3.0.0-alpha01

10 Haziran 2020

androidx.paging:paging-*:3.0.0-alpha01 yayınlandı. 3.0.0-alpha01 sürümü şu commit'leri içerir.

Paging Library, birkaç önemli yeni özelliği etkinleştirmek için 3.0 sürümüne güncellendi.

3.0 sürümündeki yeni özellikler

Bilinen Sorunlar

  • Paging 3 javadocs henüz kullanılamıyor. Bu süre zarfında lütfen yukarıda bağlantısı verilen kılavuzları veya Kotlin belgelerini kullanın. (b/158614050)

Sürüm 2.1.2

Sürüm 2.1.2

18 Mart 2020

androidx.paging:paging:2.1.2 yayınlandı. 2.1.2 sürümü, 2.1.0 sürümüne karşı bu commit'leri içerir.

Hata Düzeltmeleri

  • Geçersiz kılma sırasında bir konum dönüştürülürken nadiren görülen IndexOutOfBoundsException hatası düzeltildi.

Sürüm sorunu

  • Sayfalandırma'nın 2.1.1 sürümü, yanlış yapılandırılmış bir daldan hatalı bir şekilde yayınlandı. Bu nedenle, kısmen uygulanmış API'ler ve gelecekteki bir sürümde sunulacak işlevler açığa çıktı.

  • Paging 2.1.2, ilk olarak 2.1.1 sürümünde yayınlanan yük ortalama düzeltmesini içerir ancak bu kez 2.1.0 sürümünün üzerine doğru şekilde cherry-pick işlemi uygulanmıştır. Şu anda 2.1.1 sürümünü kullanıyorsanız bu sürüme yükseltmeniz önemle tavsiye edilir.

Sürüm 2.1.1

Sürüm 2.1.1

18 Aralık 2019

androidx.paging:paging-*:2.1.1 yayınlandı. 2.1.1 sürümü bu commit'leri içerir.

Hata düzeltmeleri

  • PositionalDataSources'tan gelen bitişik ilk yüklemeler, yer tutucular devre dışı bırakıldığında artık son erişimi merkeze alıyor.

Sürüm 2.1.0

Sürüm 2.1.0

25 Ocak 2019

Sayfalama 2.1.0, 2.1.0-rc01 sürümünde herhangi bir değişiklik yapılmadan yayınlandı.

Sürüm 2.1.0-rc01

6 Aralık 2018

Paging 2.1.0-rc01, 2.1.0-beta01 sürümünden herhangi bir değişiklik yapılmadan yayınlandı.

Sürüm 2.1.0-beta01

1 Kasım 2018

Paging 2.1.0-beta01, 2.1.0-alpha01 sürümüne kıyasla herhangi bir değişiklik olmadan yayınlandı.

Sürüm 2.1.0-alpha01

12 Ekim 2018

Paging 2.1.0-alpha01, sayfa bırakma ve her yapı için KTX uzantı kitaplıkları olmak üzere iki önemli eklemenin yanı sıra diğer API değişiklikleri ve hata düzeltmeleri içerir.

API Değişiklikleri

  • Belleğe yüklenen öğe sayısını sınırlamak için PagedList.Config.Builder.setMaxSize() eklendi.
  • androidx.paging.Config(), PagedList.Config.Builder için Kotlin alternatifi olarak eklendi
  • PagedList.Builder için Kotlin alternatifi olarak androidx.paging.PagedList() eklendi
  • LivePagedListBuilder için Kotlin alternatifi olarak DataSourceFactory.toLiveData() eklendi
  • RxPagedListBuilder için Kotlin alternatifleri olarak DataSourceFactory.toObservable() ve toFlowable() eklendi.
  • PagedList değiştirildiğinde dinlemek için AsyncPagedListDiffer.addPagedListListener() eklendi. b/111698609
  • Eski ve yeni listeyi ileten PagedListAdapter.onCurrentListChanged() varyantı eklendi, önceki varyant kullanımdan kaldırıldı.
  • Farklılıklar belirlendikten sonra pagedlist gösterildiğinde tetiklenen ek bir geri çağırma alan PagedListAdapter/AsyncPagedListDiffer.submitList() varyantları eklendi. Bu sayede, PagedList değişimini diğer kullanıcı arayüzü güncellemeleriyle senkronize edebilirsiniz. b/73781068
  • Hafızada kaç öğe olduğunu bildirmek için PagedList.getLoadedCount() eklendi. Yer tutucular devre dışı bırakılırsa döndürülen değerin her zaman .size() değerine eşit olacağını unutmayın.

Hata Düzeltmeleri

  • Listeler yeniden kullanılıyorsa karşılaştırma yapılırken oluşan yarış durumu düzeltildi. b/111591017
  • PagedList.loadAround(), dizin geçersiz olduğunda artık IndexOutOfBoundsException hatası veriyor. Daha önce, net olmayan başka bir istisna nedeniyle kilitlenebiliyordu.
  • Çok küçük bir ilk yükleme boyutunun, değişmeyen verilerle birlikte daha fazla yükleme yapılmamasına neden olduğu bir durum düzeltildi b/113122599

Sürüm 2.0.0

Sürüm 2.0.0

1 Ekim 2018

Paging 2.0.0, tek bir hata düzeltmesiyle yayınlandı.

Hata düzeltmeleri

  • PositionalDataSource ve yer tutucular kullanılarak çok hızlı kaydırma yapıldığında meydana gelebilecek kilitlenme sorunu düzeltildi b/114635383.

Sürüm 2.0.0-beta01

2 Temmuz 2018

Hata Düzeltmeleri

  • Bazı başa ekleme durumlarında (yer tutucular devre dışı, PositionalDataSource) içeriğin kaybolması sorunu düzeltildi b/80149146
  • (1.0.1 sürümünde yayınlandı) PagedListAdapter ve AsyncPagedListDiffer'nin taşıma etkinliklerini bildiremediği kilitlenmeler düzeltildi. b/110711937

AndroidX Öncesi Bağımlılıklar

Paging'in aşağıdaki AndroidX öncesi sürümleri için şu bağımlılıkları ekleyin:

dependencies {
    def paging_version = "1.0.0"

    implementation "android.arch.paging:runtime:$paging_version"

    // alternatively - without Android dependencies for testing
    testImplementation "android.arch.paging:common:$paging_version"

    // optional - RxJava support
    implementation "android.arch.paging:rxjava2:$paging_version"
}

Sürüm 1.0.1

Sürüm 1.0.1

26 Haziran 2018

Paging 1.0.1, runtime sürümünde tek bir hata düzeltmesiyle yayınlandı. Kararlılık için 1.0.1 kullanmanızı önemle tavsiye ederiz. Paging RxJava2 1.0.1 de yayınlandı ve 1.0.0-rc1 ile aynı.

Hata düzeltmeleri

  • PagedListAdapter ve AsyncPagedListDiffer'in taşıma etkinliklerini bildirememesi nedeniyle oluşan kilitlenmeler düzeltildi. b/110711937

RxJava2 Sürüm 1.0.0

RxJava2 Sürüm 1.0.0-rc1

16 Mayıs 2018

Paging RxJava2 1.0.0-rc1, ilk alfa sürümünden bu yana herhangi bir değişiklik olmadan sürüm adayı aşamasına geçiyor.

Sürüm 1.0.0

Sürüm 1.0.0-rc1

19 Nisan 2018 Paging Sürüm Adayı

Sayfalama 1.0.0 sürümü için planlanan başka bilinen sorun veya yeni özellik yoktur. 1.0.0-rc1 sürümünü kullanmak için lütfen projelerinizi yükseltin ve 1.0.0 sürümünü sağlam bir şekilde yayınlayabilmemiz için test etmemize yardımcı olun.

Bu sürümde değişiklik yok. 1.0.0-beta1 ile aynı.

Sürüm 1.0.0-beta1

5 Nisan 2018

Paging, sürüm adayı aşamasına geçmeden önce kısa bir süre beta sürümünde olacak. Paging 1.0 için başka API değişikliği planlamıyoruz ve API değişiklikleri için çıta çok yüksek.

Paging için alfa RxJava2 desteği ayrı bir isteğe bağlı modül (android.arch.paging:rxjava2:1.0.0-alpha1) olarak yayınlanır ve kararlı hale gelene kadar geçici olarak ayrı şekilde sürüm oluşturulur.

Bu yeni kitaplık, LivePagedListBuilder için RxJava2 alternatifi sunar. Observable ve Flowable oluşturabilir, Executor yerine Scheduler kullanabilir:

Kotlin

val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50)
        .setFetchScheduler(myNetworkScheduler)
        .buildObservable()

Java

Observable<PagedList<Item>> pagedItems =
        RxPagedListBuilder(myDataSource, /* page size */ 50)
                .setFetchScheduler(myNetworkScheduler)
                .buildObservable();

Yeni Özellikler

  • RxPagedListBuilder, yeni android.arch.paging:rxjava2 yapısı aracılığıyla eklenir.

API değişiklikleri

  • Oluşturucularda yürütücülerin rolünü netleştirmek için API değişiklikleri:

    • setBackgroundThreadExecutor(), setFetchExecutor() olarak yeniden adlandırıldı (PagedList.Builder ve LivePagedListBuilder içinde)

    • setMainThreadExecutor(), setNotifyExecutor() olarak yeniden adlandırıldı (PagedList.Builder içinde).

  • PagedList.mCallbacks üye gizli olarak düzeltildi.

Hata Düzeltmeleri

  • LivePagedListBuilder, Arch Components G/Ç iş parçacığı havuzu yerine belirtilen yürütücüde ilk PagedList yüklemeyi tetikler.

  • Dahili DataSource sarmalayıcılarında (DataSource.map ve yer tutucu devre dışı bırakılmış PositionalDataSource yüklemeyi uygulamak için kullanılır) geçersiz kılma davranışı düzeltildi. b/77237534

Sürüm 1.0.0-alpha7

21 Mart 2018

Sayfalama 1.0.0-alpha7, Yaşam Döngüleri 1.1.1 ile birlikte kullanıma sunulur. Paging alpha7, yukarıda bahsedilen Function sınıfının taşınmasına bağlı olduğundan lifecycle:runtime bağımlılığınızı android.arch.lifecycle:runtime:1.1.1 olarak güncellemeniz gerekir.

Paging alpha7, Paging beta sürümüne geçmeden önceki son sürüm olarak planlanmıştır.

API Değişiklikleri

  • DataSource.LoadParams nesneleri artık herkese açık bir oluşturucuya sahip ve DataSource.LoadCallback nesneleri artık soyut. Bu sayede, bir DataSource sarmalanabilir veya sahte bir geri çağırma ile doğrudan bir DataSource test edilebilir. b/72600421
  • DataSource ve DataSource.Factory için eşleyiciler
    • map(Function<IN,OUT>), DataSource tarafından yüklenen sonuçları dönüştürmenize, sarmalamanıza veya süslemenize olanak tanır.
    • mapByPage(<List<IN>,List<OUT>>), toplu işleme için de aynı şeyi sağlar (ör. SQL'den yüklenen öğelerin ayrı bir veritabanını sorgulaması gerekiyorsa bu işlem toplu olarak yapılabilir).
  • PagedList#getDataSource(), kolaylık yöntemi olarak eklendi b/72611341
  • recyclerview.extensions paketinin kalıntıları ve LivePagedListProvider dahil olmak üzere, desteği sonlandırılan tüm sınıflar API'den kaldırıldı.
  • Harita işlevini etkinleştirmek için DataSource.Factory, arayüzden soyut sınıfa dönüştürüldü.

Hata Düzeltmeleri

  • Oluşturucular, nihai olacak şekilde değiştirildi. b/70848565
  • Room DataSource uygulaması artık çok tablolu sorguları işleyecek şekilde düzeltildi. Bu düzeltme Room 1.1.0-beta1 sürümünde yer almaktadır (yukarıya bakın).
  • Yer tutucular etkinleştirildiğinde ve toplam boyut, sayfa boyutunun tam katı olduğunda BoundaryCallback.onItemAtEndLoaded için PositionalDataSource çağrılmamasına neden olan hata düzeltildi.

Sürüm 1.0.0-alpha5

22 Ocak 2018

Hata düzeltmeleri

  • Yer tutucular devre dışı bırakıldığında sayfa yükleme sorununu düzeltme b/70573345
  • IllegalArgumentException hatası b/70360195'i izlemek için ek günlük kaydı (ve spekülatif Room tarafı düzeltmesi)
  • Javadoc örnek kod düzeltmeleri b/70411933, b/71467637