Sayfalama
Bu tabloda, androidx.paging
grubundaki tüm yapılar listelenir.
Yapı | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
sayfalama-* | 3.2.1 | - | - | 3.3.0-alpha02 |
sayfalama-oluşturma | 3.2.1 | - | - | 3.3.0-alpha02 |
Bağımlılıkları bildirme
Sayfalandırmaya bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle
dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:
Modern
dependencies { def paging_version = "3.2.1" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Android dependencies for tests testImplementation "androidx.paging:paging-common:$paging_version" // optional - RxJava2 support implementation "androidx.paging:paging-rxjava2:$paging_version" // optional - RxJava3 support implementation "androidx.paging:paging-rxjava3:$paging_version" // optional - Guava ListenableFuture support implementation "androidx.paging:paging-guava:$paging_version" // optional - Jetpack Compose integration implementation "androidx.paging:paging-compose:3.3.0-alpha02" }
Kotlin
dependencies { val paging_version = "3.2.1" implementation("androidx.paging:paging-runtime:$paging_version") // alternatively - without Android dependencies for tests testImplementation("androidx.paging:paging-common:$paging_version") // optional - RxJava2 support implementation("androidx.paging:paging-rxjava2:$paging_version") // optional - RxJava3 support implementation("androidx.paging:paging-rxjava3:$paging_version") // optional - Guava ListenableFuture support implementation("androidx.paging:paging-guava:$paging_version") // optional - Jetpack Compose integration implementation("androidx.paging:paging-compose:3.3.0-alpha02") }
Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerini inceleyin.
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme bölümüne bakın.
Geri bildirim
Geri bildirimleriniz Jetpack'i iyileştirmemize yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı geliştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni hesap 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 Sorun İzleyici belgelerine bakın.
Sürüm 3.3
Sürüm 3.3.0-alpha02
20 Eylül 2023
androidx.paging:paging-*:3.3.0-alpha02
yayınlandı. Sürüm 3.3.0-alpha02 bu kaydetmeleri içerir.
Kotlin Çoklu Platform Uyumluluğu
Çağrı, büyük ölçüde CashApp'in çok platformlu sayfalama projesinin yukarı akışlı çalışmaları sayesinde Kotlin Multiplatform ile uyumlu yapıları artık sunuyor. Bu, iki depo arasında farklılık olmasını önlememizi ve iki depoyu uyumlu tutmamızı sağlar.
paging-common
, tüm Sayfa 3 API'lerinicommon
klasörüne taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.paging-testing
, kodunucommon
içine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumlu.paging-compose
, kodunucommon
platformuna taşıdı veandroidx.compose
tarafından sağlanan çoklu platform desteğiyle eşleşen bir Android yapısı gönderir.paging-runtime
,paging-guava
,paging-rxjava2
vepaging-rxjava3
yalnızca Android olarak kalacak.
API Değişiklikleri
- Yalnızca dahili kullanıma yönelik olan herkese açık Günlük Kaydedici arayüzü kullanımdan kaldırılmıştır (I16e95, b/288623117)
Harici Katkı
- Cash App'ten, Paging'in Kotlin Multiplatform'a geçişine yardımcı olduğu için veyndan'a teşekkür ederiz (#560, #561, #562, #573, #577, #577, #578, #578, #578
Sürüm 3.3.0-alpha01
20 Eylül 2023
- Bu, androidx.paging kitaplıklarının ilk çoklu platform sürümüdür. Bu sürümde yalnızca
*-jvm
ve*-android
yapı var. macOS, iOS ve Linux varyantları için3.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ı. Sürüm 3.2.1 bu kayıtları içerir.
Hata Düzeltmeleri
- Yükleme tamamlandığında
asSnapshot()
bilgisine sahip olmayacağından (PagingData.from(List, LoadStates)
aşırı yüklemenin aksine)PagingData.from(List)
kullanılarak oluşturulan bir akıştan geçildiğinde Sayfalama Testi yapısınınasSnapshot()
API'sinin takılmasına neden olan sorun düzeltildi. Bu geçici çözüm yalnızca uyumlu Akışlar (ör.flowOf(PagingData.from(...))
) için işe yarar. Uyumlu olmayan Akışlar (ör.MutableStateFlow
,LoadStates
sağlayanPagingData.from
aşırı yükünü kullanın. (I502c3) - Yeni verilerin yükleme tamamlanırken aynı çerçevede kullanılabilir olmasını sağlamak için Compose 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 kayıtları içerir.
3.1.0 sürümünden sonraki önemli değişiklikler
- Sayfalama Compose, API kararlılığına ulaştı ve bu sürüm artık diğer tüm Sayfalama yapılarıyla eşleşen Sayfalama'nın geri kalanıyla birleştirildi. 3.1.0'dan bu yana yapılan değişiklikler şunlardır:
- Bir
PagingData.from(fakeData)
oluşturupPagingData
öğesini birMutableStateFlow
(ör.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
) içine sarmalayarak sahte veri listesinin önizlemesini yapma desteği. Bu akışı, önizlemek içincollectAsLazyPagingItems()
adlı alıcı olarak@Preview
bestelerine alıcı olarak iletin. LazyVerticalGrid
veHorizontalPager
gibi geç olmayan düzenlerin yanı sıra Wear ve TV kitaplıklarındaki özel geç yüklenen bileşenler için destek. Bu,key
vecontentType
parametrelerini halihazırdaLazyColumn
için mevcut olan standartitems
API'lerine veHorizontalPager
gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olan alt düzeyLazyPagingItems
uzantı yöntemleriitemKey
veitemContentType
aracılığıyla elde edildi.LazyVerticalGrid
- Yalnızca
LazyListScope
desteği olanitems(lazyPagingItems)
veitemsIndexed(lazyPagingItems)
kullanımdan kaldırıldı.
- Bir
- Uygulamanızın her katmanının birim testi ve ayrı ayrı Sayfalama ile entegrasyonu için tasarlanmış API'ler sağlayan yeni
paging-testing
yapısı. Örneğin, şunları içerir:- Kendi özel
PagingSource
uygulamanızın davranışını Çağrı Cihazı ve gerçek kullanıcı arayüzünden bağımsız olarak doğrulamanıza olanak tanıyanTestPager
sınıfıdır. asPagingSourceFactory
API'leri,Flow<List<Value>>
veya statikList<Value>
değerini testlerde Pager'a iletilebilecek birPagingSourceFactory
değerine dönüştürürFlow<PagingData<Value>>
üzerindekiasSnapshot
Kotlin uzantısı,Flow<PagingData<Value>>
değerini doğrudanList<Value>
olarak çevirir.asSnapshot lambda
,scrollTo
veyaappendScrollWhile
gibi API'ler aracılığıyla uygulamanızın kullanıcı arayüzünü taklit etmenize olanak tanır. Böylece, sayfa bölümü içeren veriler kümenizdeki herhangi bir noktada verilerin anlık görüntüsünün doğru olduğunu kontrol edebilirsiniz.
- Kendi özel
- Sayfalama hata ayıklama bilgilerini iki düzeyde göstermek için varsayılan günlükler eklendi:
VERBOSE
veDEBUG
. Günlükler,adb shell setprop log.tag.Paging [DEBUG|VERBOSE]
komutu aracılığıyla etkinleştirilebilir. Bu durum, hem Görünümlerle sayfalama hem de Oluşturma ile sayfalama için geçerlidir. PagingDataAdapter
veAsyncPagingDataDiffer
içinCoroutineDispatcher
yerineCoroutineContext
kabul eden kurucular eklendi.- Önceki () ->
PagingSource
lambda'lardan daha açık bir API yüzeyi sağlayan yeni birPagingSourceFactory
işlevsel arayüzü eklendi. Bu fabrika, bir Çağrı Cihazı örneklendirmek için kullanılabilir.
Sürüm 3.2.0-rc01
21 Haziran 2023
androidx.paging:paging-*:3.2.0-rc01
yayınlandı. Sürüm 3.2.0-rc01 bu kayıtları içerir.
Harici Katkı
- Sayfalama'nın Android/JVM özelliklerinden uzaklaşmasına katkıda bulunduğunuz 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ı. Sürüm 3.2.0-beta01 bu kayıtları içerir.
Sayfa Oluşturma
- Sayfa Yazma, API kararlılığına resmen ulaştı. Bu nedenle
1.0.0-alpha20
olan sürüm, artık diğer tüm Sayfalama yapılarının sürümüyle eşleşecek şekilde güncellendi.
API Değişiklikleri
- Kullanımdan kaldırılan
items(LazyPagingItems)
veitemsIndexed(LazyPagingItems)
API'leri, Sayfa Yazma Yazma'dan kaldırıldı. Bu API'ların yerini alacak API'lerin örneklerini görmek için Paging Compose1.0.0-alpha20
sü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ı. Sürüm 3.2.0-alpha06 bu kaydetmeleri içerir.
Yeni Özellikler
- Mevcut
() -> PagingSource
lambda'lardan daha açık bir API yüzeyi sağlayan yeni birPagingSourceFactory
işlevsel arayüzü eklendi. Bu fabrika, birPager
örneklendirmek için kullanılabilir. (I33165, b/280655188) - Yalnızca sabit bir veri listesinden yüklenen bir
PagingSourceFactory
elde etmek için yeniList<Value>.asPagingSourceFactory()
paging-testing
API'si eklendi.Flow<List<Value>>
üzerindeki mevcut uzantı, birden fazla nesil statik veriyle test yapmak için yine de kullanılmalıdır. (Id34d1, b/280655188)
API Değişiklikleri
- Sayfalandırma testindeki tüm herkese açık API'ler, artık yalnızca testlerde kullanıldığından emin olmak için
@VisibleForTesting
ek açıklamasına sahiptir. (I7db6e) asSnapshot
API artık birCoroutineScope
öğesinin geçirilmesini gerektirmiyor. Artık varsayılan olarak, üst kapsamından devralınan bağlamı kullanır. (Id0a78, b/282240990)TestPager
oluşturucu parametreleri, gerçekPager
oluşturucu parametrelerinin sırasını sezgisel olarak eşleşecek şekilde yeniden düzenlendi (I6185a)- Sayfalandırma testinin
() -> PagingSource<Key, Value>
lambda türünü 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 görev dağıtıcı gerekmiyor. Bu parametre ayarlandığında artık test davranışında herhangi bir değişiklik yapılmaz. (Ie56ea)
Sürüm 3.2.0-alpha05
3 Mayıs 2023
androidx.paging:paging-*:3.2.0-alpha05
yayınlandı. Sürüm 3.2.0-alpha05 bu kayıtları içerir.
API Değişiklikleri
asSnapshot
Sayfalama Testi API'si artıkloadOperations
parametresini varsayılan olarak boş bir lambda olarak ayarlıyor. Bu sayede, ilk yenileme yüklemesinden veri almak için herhangi bir yükleme işlemine geçmedenasSnapshot
çağrılmasına izin verilir. (Ied354, b/277233770)
Belge İyileştirmeleri
- Bunun,
PagingSource
örnekleri oluşturmak için yeniden kullanılabilir bir fabrika döndürenFlow
üzerindeki bir genişletme yöntemi olduğunu netleştirmek içinasPagingSourceFactory()
ile ilgili dokümanlar güncellendi. (I5ff4f, I705b5) - Atlamayı desteklemek için
itemsBefore
veitemsAfter
öğelerini geçersiz kılma gerekliliğini netleştirmek amacıylaLoadResult.Page
oluşturucudaki dokümanlar güncellendi. (Ied354)
Harici Katkılar
- Sayfalama'nın Android/JVM özelliklerinden uzaklaşmasına katkıda bulunduğunuz için Veyndan'a teşekkür ederiz. (#525, #523, #520, #519, #507, #506, #505, #499, #497, #497, #
Sürüm 3.2.0-alpha04
8 Şubat 2023
androidx.paging:paging-*:3.2.0-alpha04
yayınlandı. Sürüm 3.2.0-alpha04 bu kayıtları içerir.
Çağrı Testi
paging-testing
yapısı artık birFlow<List<Value>>
öğesindenpagingSourceFactory
oluşturmak için bir Çağrı Cihazı'na sağlamak üzereasPagingSourceFactory
yöntemi içeriyor. Akıştan yayınlanan herList<Value>>
, Sayfalandırılmış veri oluşturmayı temsil eder. Bu, Çağrı Cihazı'nın toplayacağı bir veri kaynağını taklit ederek örneğinPagingData
dönüşümleri üzerinde 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 birFlow<PagingData<T>>
çıkışını onaylamak için kullanılabilir.Bu işlem,
Flow<PagingData<Value>>
üzerindekiasSnapshot
Kotlin uzantısı kullanılarak yapılır veFlow<PagingData<Value>>
, doğrudanList<Value>
değerine çevrilir.asSnapshot
lambda,scrollTo
veyaappendScrollWhile
gibi API'ler aracılığıyla uygulamanızın kullanıcı arayüzünü taklit etmenizi sağlar. Tekrarlanabilir ve tutarlı bir şekilde, sayfa bölümü içeren veri kümenizdeki herhangi bir noktada verilerin anlık görüntüsünün doğru olduğunu kontrol edebilirsiniz.// 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 birsuspend
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, Ib29b9, I51f4d
API Değişiklikleri
AsyncPagingDataDiffer
vePagingDataAdapter
içindegetItem
vepeek
için yapılan kullanıcı arayüzü çağrıları artık yalnızca Ana iş parçacığında doğru şekilde çağrılabilir olarak işaretleniyor. (I699b6)TestPager
tarafından kullanılan genel türlerden joker karakterler kaldırıldı. Böylece, Java programlama dilinde yazılan kodda bu yöntemlerin sonuçlarını kullanmak daha kolay hale geldi. (I56c42)
Sürüm 3.2.0-alpha03
24 Ekim 2022
androidx.paging:paging-*:3.2.0-alpha03
yayınlandı. Sürüm 3.2.0-alpha03 bu kayıtları içerir.
Çağrı Testi
Bu sürüm yeni bir yapı içeriyor: paging-testing
. Bu yapı, uygulamanızın her katmanının birim test edilmesi ve Sayfalama ile entegrasyonunun ayrı olarak yapılması amacıyla tasarlanmış API'ler sağlar.
Örneğin bu ilk sürüm, kendi özel PagingSource
uygulamanızın davranışını Pager
ve normalde uçtan uca Sayfalama entegrasyonunu simüle etmek için gereken gerçek kullanıcı arayüzünden bağımsız olarak doğrulamanıza olanak tanıyan bir TestPager
sınıfı içerir.
TestPager
, sahte, yani Pager
işlevinin gerçek uygulamasını yansıtan ve bir PagingSource
testi için basitleştirilmiş bir API yüzeyi sağlayan iki test olarak kabul edilmelidir. Bu API'ler, suspend
API'leridir ve Android'de Kotlin eş yordamlarını test etme kılavuzunda özetlendiği gibi runTest
dahilinde çalıştırılmalıdır.
Bu API'lerin kullanımdaki bir örneğini, TestPager
kullanacak şekilde yeniden düzenlenen room-paging
testlerinde bulabilirsiniz.
API Değişiklikleri
LoadResult.Page.data
ileLoadResult.Page.iterator()
arasında uygun iterasyonu etkinleştirir. Bu,PagingSource.getRefreshKey
yöntemine aktarılanPagingState
pages
özelliği gibi birList<LoadResult.Page>
verildiğinde Kotlin standart kitaplığıflatten
yönteminin kullanılmasına dolaylı olarak izin verir. (Ie0718)
Sürüm 3.2.0-alpha02
10 Ağustos 2022
androidx.paging:paging-*:3.2.0-alpha02
yayınlandı. Sürüm 3.2.0-alpha02 bu kaydetmeleri içerir.
Yeni Özellikler
- Sayfalama artık
PagingData
kaynağından toplanan hata ayıklama bilgilerini ortaya çıkarmak içinAsyncPagingDataDiffer
veyaPagingDataAdapter
sınıfları üzerinden günlükler sağlamaktadır. - Günlükler,
adb shell
komutuyla etkinleştirilebiliradb shell setprop log.tag.Paging [DEBUG|VERBOSE].
(b/235527159)
Hata Düzeltmeleri
paging-common:3.2.0-alpha01
,paging-runtime:3.1.1
veya daha eski bir çalışma zamanıyla kullanıldığında eksikPagingDataDiffer
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ı. Sürüm 3.2.0-alpha01 bu kayıtları içerir.
API Değişiklikleri
PagingDataAdapter
veAsyncPagingDataDiffer
içinCoroutineDispatcher
yerineCoroutineContext
kabul eden kurucular eklendi. (Idc878)- Varsayılan olarak
PagingData.from()
vePagingData.empty()
, sunucu tarafındakiCombinedLoadStates
uygulamasını artık etkilemeyecek.sourceLoadStates
veremoteLoadStates
öğelerinin bu oluşturuculara geçirilmesine izin veren yeni bir aşırı yük,LoadStates
ayarının tamamen terminal (yaniNotLoading(endOfPaginationReached = false)
) gönderin.LoadStates
iletilmezse öncekiCombinedLoadStates
, statikPagingData
değerini aldığında sunucu tarafında korunur. (Ic3ce5, b/205344028)
Hata Düzeltmeleri
PagingSource.getRefreshKey()
sonucunun, null döndüreceği durumlarda artıkinitialKey
üzerinde doğru şekilde öncelik verilir ancak null olmayan birinitialKey
ayarlanmıştır. (Ic9542, b/230391606)
Harici Katkı
- Test-coroutines-lib geçişi (I3366d) nedeniyle :compose:ui:ui-test api (updateApi) güncellendi
Sürüm 3.1
Sürüm 3.1.1
9 Mart 2022
androidx.paging:paging-*:3.1.1
yayınlandı. Sürüm 3.1.1 bu kayıtları içerir.
Hata Düzeltmeleri
.cachedIn()
tarafından yanlış şekilde eklenen nesiller arasındaki araLoadState.NotLoading
etkinlikleri kaldırıldı. Bu değişiklik, başarısız yüklemeleri yeniden deneme, yenileme veya geçersiz kılma sırasında oluşan gereksizLoadState.NotLoading
etkinliklerini kaldırarakLoadState
değişikliklerine tepki vermeyi çok kolaylaştırır.
Sürüm 3.1.0
17 Kasım 2021
androidx.paging:paging-*:3.1.0
yayınlandı. Sürüm 3.1.0 bu kayıtları içerir.
3.0.0 sürümünden sonraki önemli değişiklikler
Flow<PagingData>.observable
veFlow<PagingData>.flowable
API'leri artık deneysel değilLoadState
için davranış değişiklikleri:endOfPaginationReached
artık hemPagingSource
hem deRemoteMediator
içinLoadType.REFRESH
boyunca her zamanfalse
- Sayfalama'dan
LoadStates
, aşağı akış yayını yapmadan önce artık hemPagingSource
hem deRemoteMediator
için geçerli değerleri bekliyor. Yeni nesilPagingData
artık yenileme durumu için her zaman doğru şekildeLoading
ile başlayacak. Bazı durumlarda yanlış bir şekildeNotLoading
değerine sıfırlamak yerine bu ayardan oluşacak. - Sunucu API'lerindeki
.loadStateFlow
ve.addLoadStateListener
artık yedek olarak, aracı durumu her zamannull
olarak ayarlanmış ilkCombinedLoadStates
göndermez
- Geçersiz kılma / yeni nesillerde iptal işlemi artık heyecanla gerçekleştiriliyor. Artık
Flow<PagingData>
sitesinde.collectLatest
kullanmanız gerekmese de kullanılması önerilir. PagingSource.LoadResult.Invalid
,PagingSource.load
öğesinden yeni bir döndürme türü olarak eklendi. Bu durum, Sayfalama'nın buPagingSource
için bekleyen veya gelecekteki tüm yükleme isteklerini silip geçersiz kılmasına neden olur. Bu döndürme türü, veritabanından veya ağdan döndürülebilecek, geçersiz ya da eski olabilecek verileri işlemek için tasarlanmıştır.- Sayfalar kullanıcı arayüzünde sunulurken eşzamanlı olarak tetiklenen
.onPagesPresented
ve.addOnPagesUpdatedListener
sunucu API'leri eklendi. Sayfa güncellemeleri aşağıdaki durumlarda gerçekleşebilir:- Yeni nesil PagingData'nın ilk yüklemesi, yeni neslin sunulan öğelerde herhangi bir değişiklik içerip içermediğine bakılmaksızın tamamlanır. Liste birebir aynı olduğu için ilk yüklemeyi güncelleme yapmadan tamamlayan yeni nesil, bu geri çağırmayı yine de tetikler.
- Eklenen sayfa yeni öğe içermese bile sayfa eklenir.
- Bırakılan sayfa boş olsa bile sayfa atlanır.
Sürüm 3.1.0-rc01
3 Kasım 2021
androidx.paging:paging-*:3.1.0-rc01
yayınlandı. Sürüm 3.1.0-rc01 bu kayıtları içerir.
Hata Düzeltmeleri
- .cachedIn() işlevindeki bir yarış 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
- Çok sayıda hızlı öğe erişiminin, prefetchRemote'de değerlendirilmek üzere iptal edilmesine ve sayfa yüklemelerinin durmasına neden olmasına neden olan sorun düzeltildi. Bu durum özellikle, çok sayıda öğenin tek seferde, kullanıcı kaydırma yönüne göre yüklenmeye öncelik verilecek bir sıralamada yerleştirilmesi durumunda sorun yaratır. Bu öğe erişimleri artık arabelleğe alınıyor ve kaldırılmalarını önlemek için eşzamanlı olarak önceliklendiriliyor. (aosp/1833273)
Sürüm 3.1.0-alpha04
29 Eylül 2021
androidx.paging:paging-*:3.1.0-alpha04
yayınlandı. Sürüm 3.1.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
Flow<PagingData>.observable
veFlow<PagingData>.flowable
API'leri artık deneysel değil. (Ie0bdd)
Hata Düzeltmeleri
- LoadStates için
endOfPaginationReached
,LoadType.REFRESH
için her zamanfalse
olur. Önceden, RemoteMediatorREFRESH
için endOfPaggationReachedtrue
değerine sahipken PagingSource için mümkün değildi. REFRESH'in terminal olması hiçbir anlam ifade etmeyeceğinden artık bu davranış artık her zamanfalse
döndürülecek şekilde birleştirilir ve artık LoadStates'teki API sözleşmesi kapsamında belgelenmektedir. Sayfalara ayırmanın sonlandırılıp sonlandırılmayacağına karar verirken bunu her zaman APPEND veya PREPEND talimatlarına göre yapmanız gerekir. (I047b6) Sayfalama'dan LoadState'ler artık nesiller arasında aşağı akış yayını yapmadan önce hem PagingSource hem de RemoteMediator'dan geçerli değerleri bekler. Bu, yeni nesil PagingData öğelerinin, zaten Yükleniyor durumundaysa MergedLoadStates.source.refresh'de NotLoading göndermesini engeller.
Geçersiz kılma / yeni nesillerde iptal işlemleri artık heyecanla gerçekleştiriliyor. Artık
Flow<PagingData>
alanında .collectUpdated özelliğini kullanmak gerekli olmasa da bunu yapmanız önemle tavsiye edilir. (I0b2b5, b/177351336, b/195028524)Sunucu API'lerinde
.loadStateFlow
ve.addLoadStateListener
artık yedekli olmayan bir şekilde, aracı durumları her zamannull
, kaynak durumları iseNotLoading(endOfPaginationReached = false)
olarak ayarlanmış ilkCombinedLoadStates
göndermez. Bu gelişme şu anlama geliyor:- RemoteMediator kullanırsanız arabulucu durumları her zaman doldurulur.
PagingData
üzerinden gerçek birCombinedLoadStates
almadığı takdirde.loadStateFlow
üzerinde yeni bir loadState işleyicisi veya yeni bir toplayıcı kaydetmek artık geçerli değeri hemen yayınlamaz. Bu durum, bir toplayıcı veya dinleyiciPagingData
gönderilmeden önce başlarsa ortaya çıkabilir. (I1a748)
Sürüm 3.1.0-alpha03
21 Temmuz 2021
androidx.paging:paging-*:3.1.0-alpha03
yayınlandı. Sürüm 3.1.0-alpha03 bu kaydetmeleri içerir.
API Değişiklikleri
Üçüncü bir LoadResult dönüş türü LoadResult.Geçersiz Sayfa'ya eklenir. PagingSource.load,LoadResult.Invalid öğesini döndürdüğünde, sayfalama yüklü verileri siler ve PagingSource'u geçersiz kılar. Bu döndürme türü, veritabanından veya ağdan döndürülebilecek, geçersiz ya da eski olabilecek verileri işlemek için tasarlanmıştır.
Örneğin, temel veritabanının yazılmasına rağmen PagingSource zamanla geçersiz kılınmazsa ve uygulaması, yüklendiği destek veri kümesinin değişmezliğine bağlıysa (ör. LIMIT OFFSET stili db uygulamaları). Bu senaryoda, yüklemeden sonra geçersiz kılma durumunun kontrol edilmesi ve LoadResult. invalid öğesinin döndürülmesi önerilir. Bu durum, Sayfalamanın bu PagingSource'a yönelik bekleyen veya gelecekteki tüm yükleme isteklerini silip geçersiz kılmasına neden olur.
Bu dönüş türü, LivePagedList veya RxPagedList'ten yararlanan Paging2 API tarafından da desteklenir. PagingSource, Paging2'nin PagedList API'leriyle birlikte kullanıldığında PagedList hemen ayrılır ve bu PagedList'e veri yükleme girişimlerini durdurur ve PagingSource'ta geçersiz kılma işlemini tetikler.
LoadResult kapalı bir sınıftır. Yani bu, kaynakla uyumsuz olan bir değişikliktir. Bu tür bir değişiklik, doğrudan PagingSource.load sonuçlarının kullanıldığı kullanım alanlarının derleme zamanında LoadResult.Geçersiz'i işlemek zorunda kalacağı anlamına gelir. Örneğin, döndürülen türü kontrol etme işlemi ol (Listede) olan Kotlin kullanıcılarının "Geçersiz tür" için bir kontrol eklemesi gerekir. (Id6bd3, b/191806126, b/192013267)
Hata Düzeltmeleri
- PagingSource.registerGeçersizCallback veya DataSource.add InvalidatedCallback aracılığıyla eklenen geçersiz kılma geri çağırmaları, zaten geçersiz olan bir PagingSource / DataSource'ta kayıtlıysa artık otomatik olarak tetiklenir. Bu işlem, Sayfalama'nın geçersiz kılma sinyallerini bırakmasına ve başlangıç yükleme sırasında zaten geçersiz olan bir Kaynak sağlandığında takılıp kalmasına yol açan bir yarış durumunu çözer. Ayrıca, en fazla bir kez çağrılmaları garanti edildiğinden, geçersiz kılma işlevi artık tetiklendikten sonra düzgün bir şekilde kaldırılmaktadır. (I27e69)
- Yer tutucu başlangıç değerini (InitialPagedList) yeni örneklenmiş bir PagedList akışından gönderme, ör. LivePagedListBuilder veya RxPagedListBuilder, artık önceden yüklenmiş verileri temizlemeyecek.
Sürüm 3.1.0-alpha02
1 Temmuz 2021
androidx.paging:paging-*:3.1.0-alpha02
yayınlandı. Sürüm 3.1.0-alpha02 bu kaydetmeleri içerir.
Yeni Özellikler
Sunulan sayfalar kullanıcı arayüzünde güncellendikten hemen sonra tetiklenen onPagesDelivered dinleyici ve akış sunucusu API'leri eklendi.
Bu güncellemeler kullanıcı arayüzü ile eşzamanlı olduğundan, güncelleme uygulandıktan sonraki durumu incelemek için .snapshot, .getItemCount gibi bağdaştırıcı yöntemlerini çağırabilirsiniz. Her güncellemede yapılması pahalı olabileceğinden .snapshot() açık bir şekilde çağrılmaya bırakılır.
Sayfa güncellemeleri aşağıdaki senaryolarda gerçekleşebilir:
- Yeni nesil PagingData'nın ilk yüklemesi, yeni neslin sunulan öğelerde herhangi bir değişiklik içerip içermediğine bakılmaksızın tamamlanır. Listenin tamamen aynı olması nedeniyle, ilk yüklemeyi herhangi bir güncelleme olmadan tamamlayan yeni nesil, bu geri çağırmayı yine de tetikler.
- Eklenen sayfa yeni öğe içermese bile bir sayfa eklenir
- Bırakılan sayfa boş olsa bile sayfa atlanır (I272c9, b/189999634)
Hata Düzeltmeleri
- LivePagedList veya RxPagedList tarafından oluşturulan ilk değerden PagedList.dataSource'a erişmek artık yanlış bir şekilde LegalStateException (I96707) hatasına neden olmayacak.
Sürüm 3.1.0-alpha01
2 Haziran 2021
androidx.paging:paging-*:3.1.0-alpha01
yayınlandı. Sürüm 3.1.0-alpha01 bu kayıtları içerir.
API Değişiklikleri
paging-rxjava3
tarafından sağlanan sınıflar artıkpaging-rxjava2
(Ifa7f6) ile çakışmamaları içinandroidx.paging.rxjava3
paketi altında bulunuyor
Hata Düzeltmeleri
- Sayfalamanın bazen RecyclerView'a işlem gerektirmeyen farklı etkinlikler göndermesi ve bunun sonucunda belirli işleyicilerin erken tetiklenmesine neden olması sorunu düzeltildi. (Ic507f, b/182510751)
Harici Katkı
- rxjava3 yapısına desteği sonlandırılmış PagedList compat API'leri eklendi (Id1ce2, b/182497591)
Sayfa Oluşturma Oluşturma Sürümü 1.0.0
Sürüm 1.0.0-alfa20
24 Mayıs 2023
androidx.paging:paging-compose:1.0.0-alpha20
yayınlandı. 1.0.0-alpha20 sürümü bu kayıtları içerir.
Yeni Özellikler
- Sayfa Yazma artık
PagingData.from(fakeData)
oluşturupPagingData
öğesiniMutableStateFlow
(ör.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
). Bu veriler@Preview
için giriş olarak kullanıldığındacollectAsLazyPagingItems()
işlevine yapılan çağrılar önizlenebilirLazyPagingItems
sağlar. (I8a78d, b/194544557)
Hata Düzeltmeleri
LazyPagingItems
bölgesinde toplanmış, önbelleğe alınmış veriler (pager.flow.cachedIn
) artık durum geri yüklemeden sonra eşzamansız toplama gerektirmeden hemen kullanılabilir olacak Bu, durum geri yüklendikten sonra önbelleğe alınan verilerin, ilk bileşimden hemen sonra sunulmak için hazır olacağı anlamına gelir. (I97a60, b/177245496)
Sürüm 1.0.0-alfa19
3 Mayıs 2023
androidx.paging:paging-compose:1.0.0-alpha19
yayınlandı. Sürüm 1.0.0-alpha19 bu kayıtları içerir.
Tüm geç düzenleri destekleme
Daha önce, Sayfa Yazma, LazyListScope
üzerinde özel items
ve itemsIndexed
uzantıları sağlıyordu. Bu da, Sayfa Yazma Yazma'yı LazyVerticalGrid
, HorizontalPager
gibi diğer geç düzenlerle veya Wear ve TV kitaplıkları tarafından sağlanan diğer özel geç yüklenen diğer bileşenlerle birlikte kullanamadığınız anlamına geliyordu. Bu sürümle ilgili birincil güncelleme, bu esnekliksizliği ortadan kaldırmaktır.
Daha geç düzenleri desteklemek için API'leri farklı bir katmanda oluşturmamız gerekiyordu. Her geç düzen için özel bir items
API sağlamak yerine Sayfa Yazma Yazma, itemKey
ve itemContentType
için LazyPagingItems
ürününde artık biraz daha düşük düzeyde uzantı yöntemleri sağlamaktadır. Bu API'ler, key
ve contentType
parametrelerini LazyColumn
ve LazyVerticalGrid
için halihazırda mevcut olan standart items
API'lerine ve bunların HorizontalPager
gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olur. (Ifa13b, Ib04f0, b/259385813)
Diğer bir deyişle, bir LazyVerticalGrid
desteklenir:
// 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ına ilişkin daha fazla örnek için lütfen örneklerimize bakın.
Bu değişiklikler LazyColumn
ve LazyRow
örneklerini birkaç satır daha uzatsa da, tüm geç düzenlerdeki tutarlılığın, Sayfalama Yazma'yı kullanacaklar için önemli bir faktör olduğunu düşündük. Bu nedenle, mevcut LazyListScope
uzantıları kullanımdan kaldırıldı. (I0c459, I92c8f, b/276989796)
API Değişiklikleri
- Yeni API'lere geçişi kolaylaştırmak için
LazyListScope
üzerindekiitems
veitemsIndexed
uzantısı işlevleri artık yeni API'lerdeki desteği yansıtancontentType
parametresini desteklemektedir. (Ib1918, b/255283378)
Bağımlılık Güncellemeleri
- Sayfa Yazma'nın bağımlılığı, Compose 1.0.5'ten Compose 1.2.1'e güncellendi. (Ib1918, b/255283378)
Sürüm 1.0.0-alpha18
8 Şubat 2023
androidx.paging:paging-compose:1.0.0-alpha18
, hiçbir değişiklik yapılmadan serbest bırakıldı. 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ü bu kayıtları içerir.
Yeni Özellikler
collectLazyPagingItems
numaralı telefonu aradığınızda özelCoroutineContext
desteği ekleyin. (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
- Sayfalama artık PagingData'dan toplanan hata ayıklama bilgilerini ortaya çıkarmak için
LazyPagingItems
sınıfı aracılığıyla günlükler sağlamaktadır. - Günlükler,
adb shell
komutuyla (adb shell setprop log.tag.Paging [DEBUG|VERBOSE]
) 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 bir sürümle kullanıldığında eksikPagingDataDiffer
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ü bu kayıtları içerir.
API Değişiklikleri
PagingDataAdapter
veAsyncPagingDataDiffer
içinCoroutineDispatcher
yerineCoroutineContext
kabul eden kurucular eklendi. (Idc878)
Hata Düzeltmeleri
LazyPagingItems
, ilkloadState
öğesiniLoadState.Loading
yenilenecek şekilde 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ü bu kayıtları içerir.
API Değişiklikleri
LazyPagingItems.snapshot()
işlevi,LazyPagingItems.itemSnapshotList
özelliğiyle (Ie2da8) değiştirildi- Desteği sonlandırılmış
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ırmayı
LazyColumn/Row
ile bağlamak için kullanılanitems(lazyPagingItems)
veitemsIndexed(lazyPagingItems)
artık öğeyi temsil eden bir sabit anahtar belirtmenize olanak tanıyan seçenek anahtarı parametresini kabul ediyor. Anahtarlar hakkında daha fazla bilgiye buradan ulaşabilirsiniz. (I7986d) lazyPagingItems.getAsState(index)
işlevi 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ı. Sürüm 1.0.0-alpha11 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ı. Sürüm 1.0.0-alpha10 bu kaydetmeleri içerir.
Sürüm 1.0.0-alpha09
18 Mayıs 2021
androidx.paging:paging-compose:1.0.0-alpha09
yayınlandı. Sürüm 1.0.0-alpha09 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- LazyPagingItems' itemCount ve öğe alıcı artık gözlemlenebilir ve böylece LazyVerticalGrid ile de kullanılabilir (Ie2446, b/171872064, b/168285687)
Oluşturma Uyumluluğu
androidx.paging:paging-compose:1.0.0-alpha09
yalnızca Compose1.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ü bu kayıtları içerir.
Compose 1.0.0-beta01 ile entegrasyon için 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ü bu kayıtları içerir.
Compose alfa12 ile entegrasyon için 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ü bu kayıtları içerir.
Hata Düzeltmeleri
Compose 1.0.0-alpha11 sürümüne bağlı olarak 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 sürümüne bağlı olarak 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
- Uzaktan güncellemenin uygulandığından emin olmak için
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
kolaylık özellikleri yalnızca hem aracı hem de kaynak yükleme durumuNotLoading
olduktan sonraLoading
değerindenNotLoading
değerine geçiş yapacak şekilde güncellendi. (I65619)
Sürüm 1.0.0-alpha03
2 Aralık 2020
androidx.paging:paging-compose:1.0.0-alpha03
yayınlandı. Sürüm 1.0.0-alpha03 bu kayıtları içerir.
- Compose 1.0.0-alpha08 ile eşleşecek şekilde güncellendi.
Sürüm 1.0.0-alpha02
11 Kasım 2020
androidx.paging:paging-compose:1.0.0-alpha02
yayınlandı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.
API Değişiklikleri
AsyncPagingDataDiffer
/PagingDataAdapter
(Iddfe8, b/172041660) içinde kullanılabilen aynı işlevi sunan.peek()
,.snapshot()
,.retry()
ve.refresh()
yöntemleriLazyPagingItem
kampanyalarına eklendi
Sürüm 1.0.0-alpha01
28 Ekim 2020
androidx.paging:paging-compose:1.0.0-alpha01
yayınlandı. Sürüm 1.0.0-alpha01 bu kayıtları içerir.
Yeni Özellikler
paging-compose
yapısı, Paging Library 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 kayıtları içerir.
Hata Düzeltmeleri
PagedList.dataSource
ürününeLivePagedList
veyaRxPagedList
tarafından oluşturulan ilk değerden erişmek artık hatalı bir Kuraldışı İstisnası (I96707) hatasına yol açmaz
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ü bu kayıtları içerir.
3.0.0'ın temel özellikleri
Paging 2.x.x'teki mevcut API'nin büyük bölümü, aşağıdaki iyileştirmeleri sağlamak amacıyla yeni Paging 3 API'ler olması amacıyla kullanımdan kaldırılmıştır:
- Kotlin eş yordamları ve Flow için birinci sınıf destek
- İptal desteği
- Yerleşik yükleme durumu ve hata sinyalleri
- Yeniden deneme + yenileme işlevi
- Üç DataSource alt sınıfı da birleştirilmiş bir PagingSource sınıfında birleştirildi
- Ayırıcı eklemek için yerleşik dönüşüm de dahil ö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ı. Sürüm 3.0.0-rc01 bu kayıtları içerir.
Hata Düzeltmeleri
- Sayfalamanın bazen RecyclerView'a işlem gerektirmeyen farklı etkinlikler göndermesi ve bunun sonucunda belirli işleyicilerin erken tetiklenmesine neden olması sorunu 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ü bu kayıtları içerir.
Hata Düzeltmeleri
- RecyclerView'da beklenmeyen atlamaları önlemek için liste yeniden yüklendiğinde yer tutucuların işlenme şeklini 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()
öğesini eşzamanlı olarak çağırmamaktadır. (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ü bu kayıtları içerir.
API Değişiklikleri
- Rx3 uzantıları artık doğru şekilde yayılıyor
@ExperimentalCoroutinesApi
Etkinleştirme şartı. Bunlar daha önce@get
yönteminde işaretlenmişti. Bu yöntem, Kotlin Derleyici tarafından şu nedenle yoksayılıyordu: https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımında kısıtlamalar uygula (I6aa29, b/174531520)
- Uzaktan yenileme çağrıldığında
PagingState
öğesinin her zamannull
olmasına neden olan bir hata düzeltildi. - PagingSource tarafından döndürülen boş sayfaların,
prefetchDistance
işlevini yerine getirmek için Sayfalama'nın tekrar getirilmesini engelleyerek Sayfalama'nın "takılmasına" neden olan 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ü bu kayıtları içerir.
API Değişiklikleri
- Rx2 ve Rx3 sarmalayıcıları artık bağımlı olduğu deneysel ek açıklamayı gösteriyor. paging-rxjava2 veya pageing-rxjava3'te Rx uyumlu sarmalayıcıları kullanıyorsanız artık kullanımlara
@OptIn(ExperimentalCoroutinesApi::class)
(Ib1f9d) ile ek açıklama eklemeniz gerekir.
Hata Düzeltmeleri
- Uyumluluk yolları üzerinden v2
DataSource
API'leri kullanılırken bazenIndexOutOfBoundsException: Inconsistency detected
hatası düzeltildi - Uyumluluk yolları aracılığıyla kullanıldığında
DataSource
öğesinin başlatılması sırasındaisInvalid
çağrısı, artık ana iş parçacığı yerineFetchDispatcher'da doğru şekilde başlatılıyor. Bu işlem, OdanınPagingSource
uygulamasını kullanırken ana ileti dizisinde Db erişimi nedeniyle birIllegalStateException
sorununu düzeltir.
Sürüm 3.0.0-alpha13
27 Ocak 2021
androidx.paging:paging-*:3.0.0-alpha13
yayınlandı. Sürüm 3.0.0-alpha13 bu kayıtları içerir.
API Değişiklikleri
PagingSource.getRefreshKey
artık isteğe bağlı değil, varsayılan bir uygulaması olmayan soyut bir işlevdir. Kullanıcılar taşıma işlemini gerçekleştirirken varsayılan uygulamayı döndürmeye devam edebilir. Bu durumda yalnızcanull
döndürülür. AncakgetRefreshKey()
, kullanıcının mevcut kaydırma konumuna göre anahtar döndüren gerçek bir uygulamaya sahip olmalıdır. Bu, Sayfalama'nın mümkünsePagingState.anchorPosition
aracılığıyla görüntü alanı etrafında ortalanmış şekilde yüklenmeye devam etmesine olanak tanır. (I4339a)InvalidatingPagingSourceFactory
artık final sınıfı (Ia3b0a)- İsteğe bağlı ek bir SeparatorType parametresiyle terminal ayırıcı (üstbilgi / altbilgi) davranışının yapılandırılmasına izin verin. İki seçenek şunlardır:
FULLY_COMPLETE
- mevcut davranış. Terminal ayırıcıları eklemeden önce hem PagingSource hem de RemoteMediator'ın endOfPaggationReached'ı işaretlemesini bekleyin. RemoteMediator kullanılmazsa uzaktan loadState yoksayılır. Bu, özellikle ağ gibi uzak bir kaynaktan alma dahil, bölüm ayırıcıları yalnızca bölüm tam olarak yüklendiğinde göstermek istiyorsanız yararlı olur.SOURCE_COMPLETE
: RemoteMediator kullanılsa bile yalnızca PagingSource'un endOfPaggationReached'i işaretlemesini bekleyin. Bu, üst bilgilerin ve alt bilgilerin ilk yüklemeyle eşzamanlı olarak sunulmasına olanak tanır. Böylece, kullanıcıların terminal ayırıcılarını görmek için sayfayı kaydırması gerekmez. (Ibe993, b/174700218)
Hata Düzeltmeleri
- Bir PagingSource, PageFetcher'dan yüklenmeye başlamadan önce geçersiz kılındığında meydana gelen nadir görülen 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ı. Sürüm 3.0.0-alpha12 bu kayıtları içerir.
API Değişiklikleri
- InvalidatingPagingSourceFactory, hiçbir soyut yönteme sahip olmadığı için artık soyut bir sınıf değildir. (I4a8c4)
- Java kullanıcıları için Lifecycle veya CoroutineScope yerine ViewModel'i kabul eden bir aşırı .cachedIn() yüklemesi eklendi. (I97d81, b/175332619)
- Java çağrılarının bir Yürütücüyü dönüştürme operatörü bağımsız değişkenlerine kabul ederek PagingData dönüştürme işlemlerini eşzamansız bir şekilde kullanmasına izin verin. Tüm -Senkronizasyon dönüştürme operatörleri, -Senkronizasyon son eki kaldırılmıştır ve Kotlin Coroutine kullanıcılarının bunun yerine askıya alma blokunu kabul eden uzantı işlevini çağırarak konunun netleştirilmesi gerekir.
Tüm PagingData dönüşüm operatörleri, statik PagingDataTransforms sınıfının altındaki uzantılara taşındı. Java kullanıcılarının bunları
statik yardımcılar (ör.
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
- Sayfalara ayırmanın sonuna ulaşıldıysa
adapter.refresh()
sırasındaRemoteMediator.load()
çağrılmamasına neden olan bir hata düzeltildi.
Sürüm 3.0.0-alpha11
16 Aralık 2020
androidx.paging:paging-*:3.0.0-alpha11
yayınlandı. Sürüm 3.0.0-alpha11 bu kayıtları içerir.
Yeni Özellikler
- Aşağıdaki temel kullanım alanları için kaydedilen durum desteği eklendi (özellikle katmanlı kaynak durumunda tam destek için hâlâ çalışmalar devam etmektedir):
- Akışın önbelleğe alınması ve uygulama sonlandırılmaması (ör. akış, görüntüleme modelinde önbelleğe alınır ve etkinlik işlemde yeniden oluşturulur)
- sayfalama kaynağı sayılır, yer tutucular etkinleştirilir ve düzen değiştirilmez.
API Değişiklikleri
PagingSource.getRefreshKey()
artık kararlı bir API (I22f6f, b/173530980)PagingSource.invalidate
artık açık bir işlev değil. Geçersiz kılma işlemi olduğunda bildirim almanız gerekiyorsa geçersiz kılmayı geçersiz kılmak yerineregister InvalidatedCallback yöntemini çağırabilirsiniz. (I628d9, b/173029013, b/137971356)- Pager artık normal kurucularının yanı sıra tek bir deneysel oluşturucuya sahip. Bunun yerine deneysel API'leri isteğe bağlı olan herkese açık API'ye sızdırmak yerine bu yöntemi etkinleştiriyor. (I9dc61, b/174531520)
- Uzaktan güncellemenin uygulandığından emin olmak için
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
kolaylık özellikleri yalnızca hem aracı hem de kaynak yükleme durumuNotLoading
olduktan sonraLoading
değerindenNotLoading
değerine geçiş yapacak şekilde güncellendi. (I65619) LoadParams.pageSize kaldırıldı (önceden kullanımdan kaldırılmış). PagingSource'ta
LoadParams.loadSize
kullanmanızı öneririz.LoadParams.loadSize
,PagingConfig.initialLoadSize
değerine eşit olduğu ilk yükleme çağrısı hariç her zamanPagingConfig.pageSize
değerine eşittir.Paging2 DataSource'unuzu Pager veya PagedList kullanmadan test ediyorsanız
initialLoadSize
ayarını da yapıyorsanızpageSize
,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 ayarlıyken ayırıcılar kullanılırken IllegalStateException nedeniyle meydana gelen kilitlenme düzeltildi. (I0ed33, b/174787528)
- RemoteMediator ayarlanmışsa PREPEND / APPEND için yükleme durumunun ilk yüklemeden hemen sonra
NotLoading(endOfPaginationReached = true)
olarak güncellenmemesi hatası düzeltildi (I8cf5a) - Sunucu tarafı API'lerin (ör. .snapshot(), .peek() vb.) ListUpdateCallback güncellemelerinde önceki (eski) listeyi döndürmesine neden olan hata düzeltildi.
- RemoteMediator ile kullanıldığında Ayırıcı operatörlerinin üstbilgi veya altbilgi eklememesine neden olan hata düzeltildi
- RemoteMediator için LoadState güncellemelerinin Yükleme durumunda takılmasına neden olan hata düzeltildi
- Paging2.0 uyumluluk API'sinin (
.asPagingSourceFactory()
) destekDataSource
öğesinin yanlış CoroutineDispatcher üzerinde başlatılmasına neden olabileceği bir hata düzeltildi. Bu, özellikle Room'un bu uyumluluk yolunu kullanan mevcut PagingSource uygulaması kullanılırken kilitlenmeyi ve olası ANR olaylarını çözer.
Sürüm 3.0.0-alpha10
2 Aralık 2020
androidx.paging:paging-*:3.0.0-alpha10
yayınlandı. Sürüm 3.0.0-alpha10 bu kaydetmeleri içerir.
API Değişiklikleri
Kullanımdan kaldırılan
dataRefreshFlow
vedataRefreshListener
API'leri,loadStateFlow / İşleyici güncellemeleriyle gereksiz olduklarından kaldırıldı. Taşıma işlemindekiler için loadStateFlow'un eşdeğeri şudur:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
Hata Düzeltmeleri
- RemoteMediator
REFRESH
için endOfPaggationReached, artık LoadState güncellemelerine doğru şekilde yayılmakta ve uzaktanAPPEND
vePREPEND
sürümlerinin tetiklenmesini önlüyor. (I94a3f, b/155290248) - Boş ilk sayfa veya yoğun filtreleme nedeniyle boş bir liste sunmak artık Sayfalama'nın
PREPEND
veyaAPPEND
yüklemeyi başlatmasını engellemez. (I3e702, b/168169730) - Geçersiz kılma işlemleri hızlı bir şekilde gerçekleştiğinde
getRefreshKey
, sonraki PagingSource nesillerinde çağrılmadığı için sorun giderildi. (I45460, b/170027530)
Harici Katkı
- Geçersiz kılmayı, yaydığı tüm PagingSource'lara yönlendiren bir
.invalidate()
API ile yeni bir soyut sınıf InvalidatingPagingSourceFactory eklendi. @claraf3 adına teşekkürler! (Ie71fc, b/160716447)
Bilinen Sorunlar
- RemoteMediator b/172254056 kullanılırken .insertSeparators() dönüşümündeki üstbilgiler ve altbilgiler hemen görünmeyebilir
- RemoteMediator'ın kullanılması,
RemoteMediator.load()
b/173717820 değerini döndürmeden önce geçersiz kılma vePagingSource.load(LoadParams.Refresh(...))
işlemi tamamlanırsa uzaktanLoadState
cihazının takılmasına neden olabilir
Sürüm 3.0.0-alpha09
11 Kasım 2020
androidx.paging:paging-*:3.0.0-alpha09
yayınlandı. Sürüm 3.0.0-alpha09 bu kaydetmeleri içerir.
API Değişiklikleri
- dataYenileFlow / İşleyici yöntemlerini bir replaceWith ifadesiyle tamamen kullanımdan kaldırın. (I6e2dd)
Hata Düzeltmeleri
- RemoteMediator ile ayırıcılar kullanıldığında
IllegalArgumentException
hatasıyla ilgili düzeltme yapıldı ve endOfPagulation döndüren bir uzaktan yükleme çalışırken geçersiz kılma tetiklendi (I3a260)
Sürüm 3.0.0-alpha08
28 Ekim 2020
androidx.paging:paging-*:3.0.0-alpha08
yayınlandı. Sürüm 3.0.0-alpha08 bu kaydetmeleri içerir.
API Değişiklikleri
DataSource.InvalidatedCallback
için Kotlin / Java varyantları, işlevsel arayüz aracılığıyla Kotlin'de SAM dönüşümlerinin etkinleştirilmesiyle birleştirildi (Kotlin 1.4'te mevcuttur). Bu ayrıca,.map
veya.mapByPage
tarafından dönüştürüldükten sonra geri çağırmaları geçersiz kılan 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 geliştirildi. Ayrıntılı olarak belirtmek gerekirse, Sayfalama artık bir sayfanın geçersiz kılınması nedeniyle
RemoteMediator#load
aramasını iptal etmeyecektir. Ayrıca, REFRESH gerekliyse REFRESH isteği başarıyla tamamlanana kadar yükleme/ekleme isteği göndermez. (I6390b, b/162252536) - androidx için EksikGetterMatchingBuilder için API lint kontrolü etkinleştirildi (I4bbea, b/138602561)
- Arka plan iş parçacığından (I18bb5, b/170988309) RecyclerView'un bildirilmesi nedeniyle
.withLoadState*
ConcatAdapter
yardımcılarının kilitlenmesine neden olan hata düzeltildi. - Çok küçük, boş olmayan bir sayfanın yüklenmesinin bazen önceden getirmenin yüklemeleri doğru şekilde tetiklemesini engellemesine neden olan 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ı. Sürüm 3.0.0-alpha07 bu kayıtları içerir.
API Değişiklikleri
- Eş zamansız PagingData Guava tabanlı operatörler, yürütme bağlamını kontrol etmek için artık Yürütücüyü parametre olarak kabul ediyor. (Id4372)
Hata Düzeltmeleri
- Bir yarış durumu nedeniyle RemoteMediator'da IndexOutOfBounds istisnasının gönderilmesi düzeltildi. (I00b7f, b/165821814)
- DataSource -> PagingSource dönüşümünde ortaya çıkan PagingSource'un DataSource'tan gelen geçersiz kılma sinyallerini yoksaymasına neden olabilecek yarış durumu düzeltildi.
- Sayfa getirme mantığındaki, PagingDataAdapter.refresh() çağrılana kadar bazen yeni nesil PagingSource'un alınamamasına neden olan bir sorun düzeltildi.
- RemoteMediator ile birlikte PagingSource'a dönüştürülmüş bir DataSource (Oda tarafından üretilen kaynak gibi) kullanıldığında kaydırma konumunun kaybolmasına neden olan sorun giderildi
Harici Katkı
- PagingData! uygulamasına RxJava2, RxJava3 ve Guava tabanlı eşzamansız dönüşüm operatörlerini eklediği için @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ı. Sürüm 3.0.0-alpha06 bu kaydetmeleri içerir.
API Değişiklikleri
- Kararlı kimlikler için destek olmadığı konusunda daha net mesajlar veren
UnsupportedOperationException
, artıkPagingDataAdapter.setHasStableIds
her çağrıldığında bildiriliyor. (Ib3890, b/158801427)
Hata Düzeltmeleri
- insertSeparators artık boş sayfaları filtrelemez ve böylece, çok sayıda boş sayfa eklenmiş olsa bile önceden getirme mesafesinin sunucu tarafından dikkate alınmasını sağlar. (I9cff6, b/162538908)
Sürüm 3.0.0-alpha05
19 Ağustos 2020
androidx.paging:paging-*:3.0.0-alpha05
yayınlandı. Sürüm 3.0.0-alpha05 bu kayıtları içerir.
Hata Düzeltmeleri
- Sayfalandırma, sunulan veriler yoğun bir şekilde filtrelendiğinde bile sayfaları artık doğru bir şekilde önceden getirmektedir.
- Yeniden denenen yükleme işlemine
LoadResult.Error
döndürülmesi, artık öğe erişimlerinin yeniden deneme işlemini hatalı şekilde yeniden tetiklemesine neden olmuyor
Harici Katkı
- Bazı testlerin temizlenmesine 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ı. Sürüm 3.0.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
- Tetikleyici sayfa yüklemeleri olmadan sunulan verilere erişime izin vermek için
peek()
API'siAsyncPagingDataDiffer
vePagingDataAdapter
öğelerine eklendi. (I38898, b/159104197) - Sunulan öğelerin sayfa getirme işlemini tetiklemeden alınmasını sağlamak için
PagingDataAdapter
veAsyncPagingDataDiffer
öğelerinesnapshot()
API'si eklendi. (I566b6, b/159104197) - Statik listelerin sunulmasına izin vermek amacıyla belirli durumlarda (ör. ilk REFRESH işlemi tamamlanmadan önce veya yalnızca dönüşümleri test etmek için) statik listeleri göstermek için genel PagingData akışıyla birleştirilebilen
PagingData.from(List<T>)
kurucusu eklendi. (Id134d) - REFRESH'de sunulan öğelerin durumunu açığa çıkarmayı amaçladıkları için datarefresh Flow / İşleyici API'lerini kullanımdan kaldırın, ancak loadState Flow / İşleyici geri çağırma zamanlaması ve itemCount özelliğinde yapılan iyileştirmelerle gereksizdir (Ia19f3).
PagingSource
veRemoteMediator
için RxJava3 uyumluluk sarmalayıcıları eklendi (I49ef3, b/161480176)
Hata Düzeltmeleri
PositionalDataSource
,toPagingSourceFactory
yardımcısı aracılığıylaPagingSource
biçimine dönüştürüldü. Oda tarafından oluşturulanPagingSource
dahil artık atlamayı desteklemek için kendilerini doğru şekilde işaretliyor. (I3e84c, b/162161201)- submitData'nın eşzamanlı varyantını kullanmanın bazen
ClosedSendChannelException
sorununa neden olan bir yarışmaya yol açabilmesine neden olan hata düzeltildi (I4d702, b/160192222)
Harici Katkı
- Slack adına RxJava3 uyumluluk sarmalayıcılarını eklediği için Zac Sweers'e 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ı. Sürüm 3.0.0-alpha03 bu kaydetmeleri içerir.
API Değişiklikleri
- PagingState kurucusu artık herkese açıktır. Bu, getYenileKey() uygulamalarını test etmeyi kolaylaştırır (I8bf15)
- Orijinal ve kotlin varyantları arasındaki belirsizliği düzeltmek için Java'dan DataSource kotlin harita işlevi varyantları gizlendi. (If7b23, b/161150011)
- Kotlin kullanıcılarına kolaylık sağlamak amacıyla sunulan yedek API'ler @JvmSynthetic (I56ae5) olarak işaretlenmiştir
- LoadResult.Page oluşturucusu için aşırı yüklemeler eklendi. Bu bileşen, itemBefore ve itemsAfter öğelerini COUNT_UNDEFINED değerine varsayılan olarak ayarlar (I47849).
- Mevcut PagingData operatörlerinin askıya alma yöntemlerini kabul etmesini sağladı ve Java kullanıcıları için yeni MapSync, highMapSync ve filterSync askıya alınmayan operatörleri kullanıma sunuldu. Mevcut dönüştürme yöntemleri uzantı işlevlerine taşındığı için Kotlin kullanıcılarının artık bunları içe aktarması gerekiyor. (I34239, b/159983232)
Hata Düzeltmeleri
- Oda (ve PositionalDataSource) PagingSources artık ilk sayfanın parçası olarak baştaki bir ayırıcıyı gösterecek. Böylece, kullanıcının bunu görmek için sayfayı kaydırmasına gerek kalmayacak. (I6f747, b/160257628)
- Yer tutucularda öğe erişimleri artık PagingData.filter() (I95625, b/158763195) tarafından dönüştürüldükten sonra istenen dizini karşılayan bir sayfa döndürülene dek PagingSource'un yüklenmesini doğru bir şekilde tetikler.
- PagingSource'tan sonra kaydırmanın bazen hata döndürdüğü, PagingDataAdapter.retry() işlevinin yeniden denemesini engelleyebileceği hata düzeltmesi. (I1084f, b/160194384)
- Öğe erişimi prefetchMesafe (Ie95ae, b/160038730) dahilinde olmasına rağmen bir sayfa düşürüldükten sonra öğenin sayfaların yüklenememesine neden olan sorunu düzeltir
- PagingConfig.maxSize ayarlamak, bir düşüş etkinliğinden sonra artık yer tutucuları etkinleştirmez (I2be29, b/159667766)
Sürüm 3.0.0-alpha02
24 Haziran 2020
androidx.paging:paging-*:3.0.0-alpha02
yayınlandı. Sürüm 3.0.0-alpha02 bu kaydetmeleri içerir.
API Değişiklikleri
PagingConfig
oluşturucu için ortak varsayılan değerlerle (I39c50, b/158576040) aşırı yüklemeler eklendiPagingDataAdapter
veAsyncPagingDataDiffer
oluşturucuları için ortak varsayılan değerlerle (Ie91f5) aşırı yüklemeler eklendidataRefreshFlow
vedataRefreshListener
bağdaştırıcısı API'leri artık birPagingData
öğesinin boş olup olmadığını belirtmek için Boole iletir (I6e37e, b/159054196)- RemoteMediator için RxJava ve Guava API'leri eklendi - RxRemoteMediator ve ListenableFutureRemoteMediator
isEmpty()
vefirstItemOrNull()
gibi ortak öğe erişimi için PagingState'e yardımcılar eklendi (I3b5b6, b/158892717)
Hata Düzeltmeleri
- Çağrı cihazı, geçersiz Sayfa Kaynağının yanlışlıkla yeniden kullanılmasını önlemek için artık PagingSource'un fabrikada yeniden kullanılıp kullanılmadığını kontrol eder ve belirsiz bir hata verir (I99809, b/158486430).
- RemoteMediator REFRESH'deki hatalar artık PagingSource'un yüklenmesini engellemiyor (I38b1b, b/158892717)
submitData
ürününün askıya alma olmayan sürümü,submitData
askıya alma sürümünden sonra çağrıldığında birden fazlaPagingData
üzerinde eşzamanlı veri toplama nedeniyle artık kilitlenmeye neden olmuyor. (I26358, b/158048877)- Yapılandırma değişikliğinden (I58bcc, b/158784811) sonra oluşabilecek "çağrı cihazından iki kez toplanamaz" istisnası düzeltildi
Sürüm 3.0.0-alpha01
10 Haziran 2020
androidx.paging:paging-*:3.0.0-alpha01
yayınlandı. Sürüm 3.0.0-alpha01 bu kayıtları içerir.
Sayfalandırma Kitaplığı, birkaç önemli yeni özelliği etkinleştirmek için 3.0 sürümüne güncellendi.
3.0'daki Yeni Özellikler
- Kotlin eş yordamları ve Flow için birinci sınıf destek.
- coroutines 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şlevleri 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ğ + veritabanı sayfalandırması
- İptal desteği
- Sunum katmanında yapılan iyileştirmeler
Bilinen Sorunlar
- Sayfa 3 JavaScript dokümanları henüz kullanılamıyor. Bu arada 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ı. Sürüm 2.1.2, 2.1.0 ile karşılaştırıldığında bu kaydetme işlemlerini içerir.
Hata Düzeltmeleri
- Geçersiz kılma sırasında bir konum dönüştürülürken ortaya çıkan nadir durumlarda
IndexOutOfBoundsException
için düzeltme.
Sürüm sorunu
2.1.1
sürümü, yanlış yapılandırılmış bir daldan yanlışlıkla yayınlanmıştı. Bu durum, kısmen uygulanmış API'leri ve işlevleri gelecekteki bir sürümde ortaya çıkarıyor.2.1.2
sayfası, başlangıçta 2.1.1'de kullanıma sunulan yük ortalama düzeltmesini içeriyor, ancak bu kez 2.1.0 sürümünün ardından doğru şekilde seçildi. Şu anda 2.1.1 sürümünü kullanıyorsanız bu sürüme geçmeniz ö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ı. Sürüm 2.1.1 bu kayıtları içerir.
Hata düzeltmeleri
- PositionalDataSource'tan gelen ardışık ilk yüklemeler, yer tutucular devre dışı bırakıldığında artık son erişim çevresinde ortalanıyor
Sürüm 2.1.0
Sürüm 2.1.0
25 Ocak 2019
2.1.0
sayfası, 2.1.0-rc01
tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.
Sürüm 2.1.0-rc01
6 Aralık 2018
2.1.0-rc01
sayfası, 2.1.0-beta01
tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.
Sürüm 2.1.0-beta01
1 Kasım 2018
2.1.0-beta01
sayfası, 2.1.0-alpha01
tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.
Sürüm 2.1.0-alpha01
12 Ekim 2018
2.1.0-alpha01
sayfası için iki önemli ekleme (sayfa atlama ve her yapı için KTX uzantı kitaplıklarının yanı sıra başka API değişiklikleri ve hata düzeltmeleri) vardır.
API Değişiklikleri
- Bellekteki yüklenen öğe sayısını sınırlamak için
PagedList.Config.Builder.setMaxSize()
eklendi. PagedList.Config.Builder
için Kotlin alternatifi olarakandroidx.paging.Config()
eklendiPagedList.Builder
için Kotlin alternatifi olarakandroidx.paging.PagedList()
eklendiLivePagedListBuilder
için Kotlin alternatifi olarakDataSourceFactory.toLiveData()
eklendiRxPagedListBuilder
için Kotlin alternatifleri olarakDataSourceFactory.toObservable()
vetoFlowable()
eklendi- PagedList değiştirilirken dinlemesi için
AsyncPagedListDiffer.addPagedListListener()
eklendi. b/111698609 - Eski ve yeni listeyi karşılayan
PagedListAdapter.onCurrentListChanged()
varyant eklendi, önceki varyant kullanımdan kaldırıldı. - Sayfa listesi görüntülenirse/gösterilirse farkın ardından tetiklenen ek bir geri çağırma alan
PagedListAdapter/AsyncPagedListDiffer.submitList()
varyantları eklendi. Bu, PagedList değişikliğini diğer kullanıcı arayüzü güncellemeleriyle senkronize etmenize olanak tanır. b/73781068 - Hafızanızda 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
- Listelerin yeniden kullanılması durumunda fark oluştururken karşılaşılan yarış durumu düzeltildi b/111591017
- Dizin geçersiz olduğunda
PagedList.loadAround()
artıkIndexOutOfBoundsException
hatası veriyor. Daha önce, belirsiz başka bir istisnayla çökebiliyordu. - b/113122599'un, değişmeyen verilerle birlikte son derece küçük bir başlangıç yükleme boyutunun daha fazla yüklenmemesine neden olması durumu düzeltildi.
Sürüm 2.0.0
Sürüm 2.0.0
1 Ekim 2018
2.0.0
sayfası tek bir hata düzeltmesiyle yayınlandı.
Hata Düzeltmeleri
PositionalDataSource
ve b/114635383 yer tutucularının kullanıldığı çok hızlı kaydırmada oluşabilecek kilitlenme düzeltildi.
Sürüm 2.0.0-beta01
2 Temmuz 2018
Hata Düzeltmeleri
- Bazı baştaki durumlarda kaybolan içerik düzeltildi (yer tutucular devre dışı, PositionalDataSource) b/80149146
- (
1.0.1
ürününde zaten yayınlandı)PagedListAdapter
veAsyncPagedListDiffer
öğelerinin taşıma etkinliklerine sinyal gönderememesine neden olan kilitlenmeler düzeltildi. b/110711937
AndroidX Öncesi Bağımlılıklar
Paging'in AndroidX öncesi sürümleri için aşağıdaki 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
1.0.1
sayfası, runtime
içinde tek bir hata düzeltmesiyle birlikte yayınlandı. Kararlılık için 1.0.1
kullanmanızı önemle tavsiye ederiz. RxJava2 1.0.1
sayfalama da yayınlanmıştır ve 1.0.0-rc1
ile aynıdır.
Hata Düzeltmeleri
PagedListAdapter
veAsyncPagedListDiffer
özelliklerinin taşıma etkinliklerine sinyal gönderememesine neden olan kilitlenmeler düzeltildi. b/110711937
RxJava2 Sürüm 1.0.0
RxJava2 Sürüm 1.0.0-rc1
16 Mayıs 2018
RxJava2 1.0.0-rc1
çağrışımı, ilk alfa sürümünden itibaren herhangi bir değişiklik yapılmadan adayı sürüm sürümüne geçiriyor.
Sürüm 1.0.0
Sürüm 1.0.0-rc1
19 Nisan 2018 Arama Yayını Adayı
1.0.0
Çağrısı için planlanmış başka bilinen bir sorun veya yeni özellik yoktur. 1.0.0-rc1
özelliğini kullanmak için lütfen projelerinizi yükseltin ve sağlam bir 1.0.0
gönderebilmemiz için savaş testi yapmamıza yardımcı olun.
Bu sürüm, 1.0.0-beta1
sürümüyle aynı olduğundan bu sürümde değişiklik yok.
Sürüm 1.0.0-beta1
5 Nisan 2018
Sayfa, adayı bırakmak için çalışmaya devam etmeden önce kısa bir süreliğine 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.
Sayfalama için Alfa RxJava2 desteği, ayrı bir isteğe bağlı modül (android.arch.paging:rxjava2:1.0.0-alpha1
) olarak yayınlanmıştır ve sabitlenene kadar geçici olarak ayrı bir sürüm sunulacaktır.
Bu yeni kitaplık, LivePagedListBuilder
yerine bir RxJava2 alternatifi sağlar. Bu alternatif, Executor
yerine Scheduler
kullanarak Observable
ve Flowable
oluşturabilir:
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:rxjava2
yapısı aracılığıyla eklendi.
API Değişiklikleri
Yürütücülerin oluşturuculardaki rolünü netleştirmek için API değişiklikleri:
setBackgroundThreadExecutor()
adlı dosyasetFetchExecutor()
olarak yeniden adlandırıldı (PagedList.Builder
veLivePagedListBuilder
içinde)setMainThreadExecutor()
adlı dosyasetNotifyExecutor()
olarak yeniden adlandırıldı (PagedList.Builder
içinde).
PagedList.mCallbacks
üyenin gizli olması düzeltildi.
Hata Düzeltmeleri
LivePagedListBuilder
, ilkPagedList
yükünü Arch Bileşenleri IO iş parçacığı havuzu yerine belirtilen yürütücüde tetikler.Dahili
DataSource
sarmalayıcılarındaki geçersiz kılma davranışı düzeltildi (DataSource.map
ve yer tutucu devre dışı bırakılanPositionalDataSource
yüklemesi için kullanılır) b/77237534
Sürüm 1.0.0-alpha7
21 Mart 2018
1.0.0-alpha7
sayfası, 1.1.1
Yaşam Döngüleri ile birlikte yayınlandı. Alfa7 sayfalandırması, yukarıda belirtilen 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.
alpha7
sayfalandırmasının, Sayfalama isabetleri beta aşamasından önce son sürüm olarak sunulması planlanmaktadır.
API Değişiklikleri
DataSource.LoadParams
nesnelerinin artık ortak kurucusu var veDataSource.LoadCallback
nesne soyut özellikte. Bu,DataSource
öğesinin sarmalanmasını veyaDataSource
öğesinin örnek geri çağırmayla doğrudan test edilmesini sağlar. b/72600421- DataSource ve DataSource.Factory Harita Çalışanları
map(Function<IN,OUT>)
, birDataSource
tarafından yüklenen sonuçları dönüştürmenize, sarmanıza veya süslemenize olanak tanır.mapByPage(<List<IN>,List<OUT>>)
, toplu işlem için de aynısını sağlar (ör. SQL'den yüklenen öğelerin ek olarak ayrı bir veritabanını sorgulaması gerekiyorsa bu işlem toplu olarak yapılabilir.)
- Kolaylık yöntemi olarak
PagedList#getDataSource()
eklendi b/72611341 recyclerview.extensions
paketi veLivePagedListProvider
paketinin kalanları da dahil olmak üzere desteği sonlandırılmış tüm sınıflar API'den kaldırıldı.- Harita işlevselliğinin etkinleştirilmesi için
DataSource.Factory
, arayüzden soyut sınıf olarak değiştirildi.
Hata Düzeltmeleri
- Oluşturucular nihai olarak değiştirildi. b/70848565
- Oda
DataSource
uygulaması, birden fazla tablo içeren sorguları işlemek için artık düzeltildi. Bu düzeltme Oda 1.1.0-beta1 içinde yer almaktadır (yukarıya bakın). - Yer tutucular etkinse ve toplam boyut sayfa boyutunun tam katıysa
PositionalDataSource
içinBoundaryCallback.onItemAtEndLoaded
yönteminin ç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üklemeyi düzeltme b/70573345
- LegalArgumentException hatası b/70360195 (ve Oda tarafı düzeltmesi) takibi için ek günlük kaydı
- Javadoc örnek kodu düzeltmeleri: b/70411933, b/71467637