Sayfalandırma
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 | - | - | - |
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.
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, birRemoteMediatorher 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ıkIllegalArgumentExceptionhatası vermeyecek. (I821c7, b/566336825)- Yüklenen sayfa sayısı
PagingConfig.maxSizedeğ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ıkNoSuchElementExceptionhatası 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ış biranchorPositionsağ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ğeriniFlow<ItemSnapshotList>değerine dönüştürmek içinFlow<PagingData>.asItemSnapshotListFlowoperatörü eklendi. Bu sayede, yüklenen verilere artık kullanıcı arayüzü katmanının dışından erişilebilir. BöyleceFlow<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.appendvePager.prependuzantı işlevleri eklendi.asItemSnapshotListFlowAPI'yi kullanırken yükleme hatalarından kurtulmak içinPager.refreshvePaging.retryuzantı 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-beta01sü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>.asStateAPI'sinin adıFlow<PagingData>.asItemSnapshotListFlowolarak 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-commonyapısı artıkFlow<PagingData>üzerinde yeni birasStateakış 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:ItemSnapshotListakışını diğer veri kaynaklarıyla birleştirmecachedInolmadan 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-commonyapısı, yüklenen öğelerin her iki ucunda da yüklemeleri manuel olarak tetiklemek içinPager.appendvePager.prependAPI'lerini de ekledi.paging-runtimeveyapaging-composeile kullanıldığında, kaydırmanın yanı sıra daha fazla veri yüklemek için alternatif bir yöntem sunar.- Yeni
asStateAPI 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() } } }asStateAPI'si kullanılırken yükleme hatalarını düzeltmek içinPager.refreshvePager.retryeklendi. 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-testingvepaging-composeiç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-testingvepaging-compose, Jetbrains'in macosX64 hedeflerini kullanımdan kaldırmasıyla uyumlu olmak içinmacosX64,iosX64,watchosX64vetvosX64desteğini kaldırdı.- Hedef konuma en yakın olan ve giriş yüklemiyle eşleşen yüklenen öğeyi almak için yeni bir
PagingStateAPI'siclosestItemAroundPositioneklendi. 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
- Jetbrains'in macosX64 hedeflerini kullanımdan kaldırmasıyla uyumlu olması için şu KMP platformlarına yönelik destek kaldırıldı:
macosX64,iosX64,watchosX64vetvosX64. (7cb9a4)
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
RecyclerViewveRefreshyüklemeleri arasındaki yarış durumunu düzelterekRecyclerViewiçindeIndexOutOfBoundsExceptionhatasını giderin. SürekliRefreshyüklemeleri nedeniyle kullanıcı arayüzü güncellemelerinin kesintiye uğraması, Sayfalandırma durumununRecyclerViewile senkronizasyonunun bozulmasına neden olabilir. Yenileme işlemi kesintiye uğrarsa (ör. art ardaRefreshyü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
PagingStateAPIclosestItemAroundPositioneklendi. 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
- Varsayılan minSdk, API 21'den API 23'e taşındı (Ibdfca, b/380448311, b/435705964, b/435705223)
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.fromartıkplaceholdersBeforeveplaceholdersAfterayarlanması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
- Paging, şu KMP hedeflerini ekledi: watchos, tvos, mingwX64, watchosDeviceArm64 ve linuxArm64. (I237dd, Ia62b3, b/368046982, Icf15d, b/364652024, I139d3, b/338268719)
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ığındaRecyclerViewöğesininIndexOutOfBoundsExceptionhatası 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ı
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ı
RecyclerViewgüncellenirken kaydırdığındaRecyclerViewöğesininIndexOutOfBoundsExceptionhatası 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 mockedgibi 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-commonvepaging-testing,watchos,tvosvelinuxArm64olmak ü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
AsyncPagingDataDifferveyaRecyclerViewile kullanılanPagingDataAdaptergibi 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)PagingDataAdapterveyaAsyncPagingDataDifferkullanarakRecyclerViewkaydı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
PagingDataPresenterartık herkese açık bir sınıf. Çoklu platform sunucuları artık dahili Paging API'leri veyapaging-runtime'ninAsyncPagingDataDiffersınıfını gerektirmek yerinePagingDataPresenterüzerine oluşturulabilir.LoadStatesöğesinin sırasıyla Hata veyaNotLoadingdurumunda olup olmadığını kontrol etmek içinhasErrorveisIdle'ya yeniLoadStatesveCombinedLoadStatesyardımcı yöntemleri eklendi. Ayrıca,Flow<CombinedLoadStates>üzerinde, yüklemeNotLoadingveya hata durumuna geçene kadar bekleyen yeni birawaitNotLoading()Kotlin uzantı yöntemi eklendi.PagingData.empty(), oluşturucusuna özelLoadStatesgeçirilmediği sürece artık varsayılan olarakNotLoadingdurumlarını gönderir. Bu,PagingDataAdapteröğesine gönderildiğindeLoadStatesgöndermediği veyaLazyPagingItemsolarak toplandığında yükleme durumlarını gönderdiği mevcut davranıştan farklıdır.LazyPagingItemsolarak 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'lerinicommon'e taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumlu.paging-testing, kodunucommonkonumuna taşıdı ve artık Android'in yanı sıra JVM ve iOS ile de uyumlu.paging-compose, kodunucommonkonumuna taşıdı veandroidx.compose'nin çoklu platform desteğiyle eşleşen bir Android yapısı sunuyor.paging-runtime,paging-guava,paging-rxjava2vepaging-rxjava3yalnı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
@MainThreadek 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
PagingDataPresenterartık herkese açık bir sınıf. Çok platformlu sunumlar artık dahili Sayfalandırma API'leri veyapaging-runtime'ninAsyncPagingDataDiffer'lerini gerektirmek yerinePagingDataPresenterüzerine kurulabilir. (Id1f74, b/315214786)LoadStatesöğesinin Hata veyaNotLoadingdurumunda olup olmadığını kontrol etmek için yeniLoadStatesveCombinedLoadStatesyardımcı yöntemleri eklendi. Ayrıca, bir yüklemeNotLoadingveya Hata durumuna geçene kadarLoadStateFlowüzerinde bekleyen yeni bir API eklendi. (Id6c67)
Davranış değişikliği
PagingData.empty(), oluşturucusuna özelLoadStatesgeçirilmediği sürece artık varsayılan olarakNotLoadingdurumlarını gönderir. Bu,PagingDataAdapteröğesine gönderildiğindeLoadStatesöğesini göndermediği veyaLazyPagingItemsolarak toplandığında Yükleniyor durumlarını gönderdiği mevcut davranıştan farklıdır.LazyPagingItemsolarak 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'lerinicommon'ye taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumlu.paging-testing, kodunucommonkonumuna taşıdı ve artık Android'in yanı sıra JVM ve iOS ile de uyumlu.paging-compose, kodunucommonkonumuna taşıdı veandroidx.compose'nin çoklu platform desteğiyle eşleşen bir Android yapısı sunuyor.paging-runtime,paging-guava,paging-rxjava2vepaging-rxjava3yalnı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ı
- Paging'in Kotlin Multiplatform'a taşınmasına yardımcı olan Cash App'ten veyndan'a teşekkür ederiz (#560, #561, #562, #573, #576, #577, #578, #579, #580, #581, #583, #584, #586, #609).
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
*-jvmve*-androidyapıları var. macOS, iOS ve Linux varyantları için3.3.0-alpha02kullanı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'sinePagingData.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çinLoadStatessağlayanPagingData.fromaşı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.Mainkullanı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 bunuPagingDataMutableStateFlowiçinde sarmalayarak (ör.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) sahte veri listesini önizleme desteği. Önizleme içincollectAsLazyPagingItems()alıcısı olarak bu akışı@Previewcomposable'larına iletin.LazyVerticalGridveHorizontalPagergibi 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üzeyLazyPagingItemsuzantı yöntemleriitemKeyveitemContentTypeile sağlandı. Bu yöntemler,keyvecontentTypeparametreleriniLazyColumn,LazyVerticalGridiçin mevcut olan standartitemsAPI'lerine veHorizontalPagergibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olur.- Yalnızca
LazyListScope'yi destekleyenitems(lazyPagingItems)veitemsIndexed(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-testingyapısı. Örneğin, şunları içerir:TestPagersınıfı, kendi özelPagingSourceuygulamanızın davranışını Pager ve gerçek kullanıcı arayüzünden bağımsız olarak doğrulamanıza olanak tanır.-
asPagingSourceFactoryAPI'leri, testlerde Pager'a iletilebilecek birFlow<List<Value>>veya statikList<Value>öğesiniPagingSourceFactoryöğesine dönüştürür. asSnapshotKotlin uzantısıFlow<PagingData<Value>>,Flow<PagingData<Value>>öğesini doğrudanList<Value>öğesine çevirir.asSnapshot lambda,scrollToveyaappendScrollWhilegibi 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:
VERBOSEveDEBUG. 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. PagingDataAdapterveAsyncPagingDataDifferiçinCoroutineDispatcheryerineCoroutineContextkabul eden oluşturucular eklendi.- Önceki () ->
PagingSourcelambda'lardan daha açık bir API yüzeyi sağlayan yeni birPagingSourceFactoryiş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-alpha20sürümünden diğer tüm Paging yapıları ile eşleşecek şekilde güncellendi.
API değişiklikleri
- Desteği sonlandırılan
items(LazyPagingItems)veitemsIndexed(LazyPagingItems)API'leri Paging Compose'dan kaldırıldı. Değiştirilen API'lerin bir örneği için Paging Compose1.0.0-alpha20sürüm notlarına bakın. (I9626e)
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
() -> PagingSourcelambda'lardan daha açık bir API yüzeyi sağlayan yeni birPagingSourceFactoryişlevsel arayüz eklendi. Bu fabrika,Pagerörneklendirmek için kullanılabilir. (I33165, b/280655188) - Yalnızca sabit bir veri listesinden yüklenen bir
PagingSourceFactoryelde etmek için yeniList<Value>.asPagingSourceFactory()paging-testingAPI'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
@VisibleForTestingile açıklama eklenmiş durumda. (I7db6e) asSnapshotAPI'si artıkCoroutineScopeiletme gerektirmiyor. Artık varsayılan olarak üst kapsamından devralınan bağlamı kullanır. (Id0a78, b/282240990)TestPageroluşturucu parametreleri, gerçekPageroluş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
asSnapshotSayfalama 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
asSnapshotiçin Paging Testing API'ninloadOperationsparametresi 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 iletmedenasSnapshotç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ürenFlowüzerinde bir uzantı yöntemi olduğunu açıklayacak şekilde güncellendi. (I5ff4f, I705b5)- Atlamayı desteklemek için
itemsBeforeveitemsAfterdeğerlerini geçersiz kılma ihtiyacını açıklamak üzereLoadResult.Pageoluşturucu ile ilgili dokümanlar güncellendi. (Ied354)
Harici Katkılar
- Sayfalandırma özelliğinin Android/JVM'ye özgü olmaktan çıkarılmasına katkıda bulunduğu için Veyndan'a teşekkür ederiz. (#525, #523, #520, #519, #507, #506, #505, #499, #497, #496, #493)
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-testingyapısı artık bir Pager'a sağlanacakFlow<List<Value>>öğesindenpagingSourceFactoryoluşturmak için birasPagingSourceFactoryyöntemi içeriyor. Flow'dan yayılan herList<Value>>, bir sayfalara ayrılmış veri neslini temsil eder. Bu, örneğinPagingDatadönüşümlerinde, Pager'ın veri toplamak için kullanacağı bir veri kaynağı oluşturarak sayfalama testlerini kolaylaştırır. (I6f230, b/235528239)paging-testingyapı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 birFlow<PagingData<T>>çıkışını onaylamak için kullanılabilir.Bu işlem,
asSnapshotKotlin uzantısı kullanılarak yapılır. Bu uzantı,Flow<PagingData<Value>>öğesini doğrudanList<Value>öğesine çevirir.Flow<PagingData<Value>>asSnapshotlambda'sı,scrollToveyaappendScrollWhilegibi 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 valuesasSnapshot,runTestiçinde çalıştırılması beklenen birsuspendyö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
AsyncPagingDataDiffervePagingDataAdapter'dekigetItemvepeekiç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)TestPagertarafı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()üzerindenLoadResult.Page.dataüzerinde kolayca iterasyon yapmanızı sağlar. Bu,PagingSource.getRefreshKeyyöntemine iletilenPagingStateöğesininpagesözelliği gibi birList<LoadResult.Page>verildiğinde Kotlin standart kitaplığıflattenyö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
PagingDatasınıfından toplanan hata ayıklama bilgilerini göstermek içinAsyncPagingDataDifferveyaPagingDataAdaptersınıfları aracılığıyla günlükler sağlar. - Günlükler,
adb shellkomutuadb 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.1veya daha eski çalışma zamanı ile kullanılırken eksikPagingDataDifferoluş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
CoroutineDispatcheryerineCoroutineContextkabul edenPagingDataAdapterveAsyncPagingDataDifferiçin oluşturucular eklendi. (Idc878)- Varsayılan olarak,
PagingData.from()vePagingData.empty()artık sunucu tarafındaCombinedLoadStatesözelliğini etkilemeyecek.sourceLoadStatesveremoteLoadStatesdeğerlerinin bu oluşturuculara iletilmesine olanak tanıyan yeni bir aşırı yükleme,LoadStatesdeğ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.LoadStatesgeçilmezse sunum yapan taraf, statikPagingData'yi aldığında öncekiCombinedLoadStateskorunur. (Ic3ce5, b/205344028)
Hata Düzeltmeleri
PagingSource.getRefreshKey()işlevinin sonucu, null değer döndüreceği ancak null olmayan birinitialKeydeğerinin ayarlandığı durumlarda artıkinitialKeyiş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 araLoadState.NotLoadingetkinlikleri kaldırıldı. Bu değişiklik, başarısız yüklemeleri yeniden denerken, yenilerken veya geçersiz kılarken üretilen gereksizLoadState.NotLoadingetkinliklerini kaldırarakLoadStatedeğ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>.observableveFlow<PagingData>.flowableAPI'leri artık deneysel değilLoadStateile ilgili davranış değişiklikleri:endOfPaginationReachedartık hemPagingSourcehem deRemoteMediatoriçin her zamanfalse(LoadType.REFRESH)- Sayfalandırma özelliğindeki
LoadStates, artık aşağı akışa yayınlanmadan önce hemPagingSourcehem deRemoteMediatoriçin geçerli değerleri bekliyor.PagingData'ın yeni nesilleri artık yenileme durumu için her zaman doğru şekildeLoadingile başlayacak ve bazı durumlarda yanlışlıklaNotLoading'a sıfırlanmayacak. - Sunucu API'lerindeki
.loadStateFlowve.addLoadStateListener, artık her zamannullolarak ayarlanmış aracı durumlarına sahip ilkCombinedLoadStatesdeğ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.collectLatestkullanmak artık zorunlu olmasa da kullanmanız önerilir. PagingSource.LoadResult.Invalid,PagingSource.loadiçin yeni bir dönüş türü olarak eklendi. Bu nedenle, Sayfalandırma buPagingSourceiç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
.onPagesPresentedve.addOnPagesUpdatedListenersunucu 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>.observableveFlow<PagingData>.flowableAPI'leri artık deneysel değildir. (Ie0bdd)
Hata düzeltmeleri
- LoadStates için
endOfPaginationReachedartık her zamanLoadType.REFRESHiçinfalse. Daha önce, RemoteMediatorREFRESHiçin endOfPaginationReachedtrueolabiliyordu ancak PagingSource için bu mümkün değildi. Bu davranış artık her zamanfalsedö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).loadStateFlowve.addLoadStateListenersunucu API'lerinde artık her zamannullolarak ayarlanan aracı durumları veNotLoading(endOfPaginationReached = false)olarak ayarlanan kaynak durumları içeren bir ilkCombinedLoadStatesgereksiz yere gönderilmiyor. Bunun anlamı:- RemoteMediator kullanıyorsanız aracı durumları her zaman doldurulur.
.loadStateFlowüzerinde yeni bir loadState işleyici veya yeni bir toplayıcı kaydetmek,PagingDatakaynağından gerçek birCombinedLoadStatesalmadıysa artık mevcut değeri hemen yayınlamayacak. Bu durum, bir toplayıcı veya dinleyiciPagingDatagö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-rxjava3tarafından sağlanan sınıflar artıkpaging-rxjava2ile çakışmaması içinandroidx.paging.rxjava3paketinde 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 buPagingDataöğesini birMutableStateFlow(ö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ızdacollectAsLazyPagingItems()çağrıları, önizlenebilirLazyPagingItemssağlar. (I8a78d, b/194544557)
Hata düzeltmeleri
LazyPagingItemsiçinde toplananpager.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üzerindekiitemsveitemsIndexeduzantı işlevleri artık yeni API'lerdeki desteği yansıtan bircontentTypeparametresini 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
collectLazyPagingItemsaranırken özelCoroutineContextdesteği eklendi. (I7a574, b/243182795, b/233783862)
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
LazyPagingItemssınıfı aracılığıyla günlükler sağlar. - Günlükler,
adb shellkomutuadb 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.1veya daha eski sürümlerle kullanıldığında ortaya çıkan eksikPagingDataDifferoluş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
PagingDataAdapterveAsyncPagingDataDifferiçinCoroutineDispatcheryerineCoroutineContextkabul eden oluşturucular eklendi. (Idc878)
Hata düzeltmeleri
LazyPagingItemsartık ilkloadStatedeğeriniLoadState.Loadingyenileme 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/Rowile bağlamak için kullanılanitems(lazyPagingItems)veitemsIndexed(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 yerinelazyPagingItems[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-alpha09yalnızca Compose1.0.0-beta07ve 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.appendkolaylık özellikleri, hem uyumlulaştırıcı hem de kaynak yükleme durumlarıNotLoadingolduktan sonra yalnızcaLoadingdurumundanNotLoadingdurumuna 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/PagingDataAdapteriçinde mevcut olan aynı işlevi sunanLazyPagingItems'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
LivePagedListveyaRxPagedListtarafından üretilen başlangıç değerindenPagedList.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ığındaDataSource.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
@ExperimentalCoroutinesApietkinleştirme şartını doğru şekilde uyguluyor. Daha önce@getyö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
PagingStatedeğerinin her zamannullolmasına neden olan hata düzeltildi. - PagingSource tarafından döndürülen boş sayfaların, Sayfalandırma'nın
prefetchDistancedeğ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
DataSourceAPI'leri kullanılırken bazen ortaya çıkanIndexOutOfBoundsException: Inconsistency detectedhatası düzeltildi. - Uyumluluk yolları üzerinden kullanıldığında
DataSourcebaşlatılırken yapılanisInvalidçağrısı artık ana iş parçacığı yerine fetchDispatcher'da doğru şekilde başlatılıyor. Bu düzeltme, Room'unPagingSourceuygulaması kullanılırken ana iş parçacığında veritabanı erişimi nedeniyle oluşanIllegalStateExceptionsorununu 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.getRefreshKeyartı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ızcanulldeğerini döndüren varsayılan uygulamayı döndürmeye devam edebilir. AncakgetRefreshKey(), 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ünsePagingState.anchorPositionaracılığıyla Sayfalandırma işleminin, görüntü alanı etrafında ortalanmış şekilde yüklenmeye devam etmesini sağlar. (I4339a)InvalidatingPagingSourceFactoryartı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ındaRemoteMediator.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.invalidateartı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.appendkolaylık özellikleri, hem uyumlulaştırıcı hem de kaynak yükleme durumlarıNotLoadingolduktan sonra yalnızcaLoadingdurumundanNotLoadingdurumuna 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.loadSizekullanmanız önerilir.LoadParams.loadSize, ilk yükleme çağrısı dışında her zamanPagingConfig.pageSizedeğerine eşittir. İlk yükleme çağrısında isePagingConfig.initialLoadSizedeğerine eşittir.Sayfalama veya PagedList kullanmadan Paging2 DataSource'unuzu test ediyorsanız
pageSize,initialLoadSizedeğerini de ayarlıyorsanızPagingConfig.pageSizeile 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, destekleyiciDataSourceöğ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
dataRefreshFlowvedataRefreshListenerAPI'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 }
Hata Düzeltmeleri
- RemoteMediator
REFRESHiçin endOfPaginationReached artık LoadState güncellemelerine doğru şekilde yayılıyor ve uzakAPPENDilePREPENDöğ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
PREPENDveyaAPPENDyü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
getRefreshKeyyö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şlemiRemoteMediator.load()döndürülmeden önce tamamlanırsa uzakLoadStatetakı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
IllegalArgumentExceptionhatası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.InvalidatedCallbackiş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,.mapveya.mapByPagetarafı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*ConcatAdapteryardı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
UnsupportedOperationExceptionile ilgili daha net mesajlarPagingDataAdapter.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.Errordö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
AsyncPagingDataDiffervePagingDataAdapter'yepeek()API'si eklendi. (I38898, b/159104197) - Gösterilen öğelerin sayfa getirme işlemi tetiklenmeden alınmasına olanak tanımak için
snapshot()API'siPagingDataAdapterveAsyncPagingDataDiffer'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)
PagingSourceveRemoteMediatoriçin RxJava3 uyumluluk sarmalayıcıları eklendi (I49ef3, b/161480176)
Hata düzeltmeleri
toPagingSourceFactoryyardımcı programı aracılığıylaPagingSourcedeğerine dönüştürülenPositionalDataSource(Room tarafından oluşturulanPagingSourcedahil), 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
ClosedSendChannelExceptionhatası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
PagingConfigoluş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
PagingDataAdapterveAsyncPagingDataDifferoluşturucuları için aşırı yüklemeler eklendi. - Bağdaştırıcı API'leri,
dataRefreshFlowvedataRefreshListenerartık birPagingDataöğ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()vefirstItemOrNull()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)
submitDataişlevinin askıya alınmayan sürümü,submitDataişlevinin askıya alınan sürümünden sonra çağrıldığında birden fazlaPagingDataü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
- Kotlin eş yordamları ve Flow için birinci sınıf destek.
- Eş yordam askıya alma işlevleri, RxJava Single veya Guava ListenableFuture temel öğeleri ile eşzamansız yükleme desteği.
- Yeniden deneme ve yenileme işlevi de dahil olmak üzere duyarlı kullanıcı arayüzü tasarımı için yerleşik yükleme durumu ve hata sinyalleri.
- Depo katmanında yapılan iyileştirmeler
- Basitleştirilmiş veri kaynağı arayüzü
- Basitleştirilmiş ağ ve veritabanı sayfalama
- İptal desteği
- Sunum katmanında yapılan iyileştirmeler
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
IndexOutOfBoundsExceptionhatası düzeltildi.
Sürüm sorunu
Sayfalandırma'nın
2.1.1sü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.Builderiçin Kotlin alternatifi olarak eklendiPagedList.Builderiçin Kotlin alternatifi olarakandroidx.paging.PagedList()eklendiLivePagedListBuilderiçin Kotlin alternatifi olarakDataSourceFactory.toLiveData()eklendiRxPagedListBuilderiçin Kotlin alternatifleri olarakDataSourceFactory.toObservable()vetoFlowable()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ıkIndexOutOfBoundsExceptionhatası 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
PositionalDataSourceve 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.1sürümünde yayınlandı)PagedListAdapterveAsyncPagedListDiffer'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
PagedListAdapterveAsyncPagedListDiffer'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, yeniandroid.arch.paging:rxjava2yapı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.BuilderveLivePagedListBuilderiçinde)setMainThreadExecutor(),setNotifyExecutor()olarak yeniden adlandırıldı (PagedList.Builderiç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 ilkPagedListyüklemeyi tetikler.Dahili
DataSourcesarmalayıcılarında (DataSource.mapve yer tutucu devre dışı bırakılmışPositionalDataSourceyü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.LoadParamsnesneleri artık herkese açık bir oluşturucuya sahip veDataSource.LoadCallbacknesneleri artık soyut. Bu sayede, birDataSourcesarmalanabilir veya sahte bir geri çağırma ile doğrudan birDataSourcetest edilebilir. b/72600421- DataSource ve DataSource.Factory için eşleyiciler
map(Function<IN,OUT>),DataSourcetarafı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/72611341recyclerview.extensionspaketinin kalıntıları veLivePagedListProviderdahil 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
DataSourceuygulaması 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.onItemAtEndLoadediçinPositionalDataSourceç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