Sayfalama
Bu tabloda androidx.paging
grubundaki tüm yapılar listelenmektedir.
Yapı | Kararlı Sürüm | Yayın Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
sayfalama-* | 3.3.2 | - | - | - |
sayfalama-oluşturma | 3.3.2 | - | - | - |
Bağımlılıkları bildirme
Sayfalama'ya bağımlılık eklemek için Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.
build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin.
uygulamanız veya modülünüz:
Eski
dependencies { def paging_version = "3.3.2" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Android dependencies for tests testImplementation "androidx.paging:paging-common:$paging_version" // optional - RxJava2 support implementation "androidx.paging:paging-rxjava2:$paging_version" // optional - RxJava3 support implementation "androidx.paging:paging-rxjava3:$paging_version" // optional - Guava ListenableFuture support implementation "androidx.paging:paging-guava:$paging_version" // optional - Jetpack Compose integration implementation "androidx.paging:paging-compose:3.3.2" }
Kotlin
dependencies { val paging_version = "3.3.2" implementation("androidx.paging:paging-runtime:$paging_version") // alternatively - without Android dependencies for tests testImplementation("androidx.paging:paging-common:$paging_version") // optional - RxJava2 support implementation("androidx.paging:paging-rxjava2:$paging_version") // optional - RxJava3 support implementation("androidx.paging:paging-rxjava3:$paging_version") // optional - Guava ListenableFuture support implementation("androidx.paging:paging-guava:$paging_version") // optional - Jetpack Compose integration implementation("androidx.paging:paging-compose:3.3.2") }
Kotlin uzantılarını kullanma hakkında bilgi için bkz. ktx belgelerine bakın.
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 bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.
Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.
Sürüm 3.3
Sürüm 3.3.2
7 Ağustos 2024
androidx.paging:paging-*:3.3.2
yayınlandı. Sürüm 3.3.2 bu taahhütleri içerir.
Yeni Özellikler
paging-common
vepaging-testing
, yeni Kotlin Multiplatform hedefleri ekledi:watchos
,tvos
velinuxArm64
(90c9768), (53e0eca)
Sürüm 3.3.1
24 Temmuz 2024
androidx.paging:paging-*:3.3.1
yayınlandı. Sürüm 3.3.1 bu taahhütleri içerir.
Hata Düzeltmeleri
- Yedekleme veri kaynağı kaydırma sırasında yenilendiğinde,
RecyclerView
ile kullanılanPagingDataAdapter
gibiAsyncPagingDataDiffer
veya API'lerin daha fazla yüklemeyi tetikleyememesine neden olan sorun düzeltildi. (I60ca5, b/352586078) PagingDataAdapter
veyaAsyncPagingDataDiffer
kullanarak birRecyclerView
kaydırılırken öğeler yedek veri kaynağından kaldırıldığında ortaya çıkan kilitlenme düzeltildi. (I8c65a, b/347649763)
Sürüm 3.3.0
14 Mayıs 2024
androidx.paging:paging-*:3.3.0
yayınlandı. Sürüm 3.3.0 bu taahhütleri içerir.
3.2.0'dan bu yana önemli değişiklikler
PagingDataPresenter
artık herkese açık bir sınıf. Çoklu platform sunucuları artık dahili Paging API'lerine veyapaging-runtime
AsyncPagingDataDiffer
öğesine gerek kalmadanPagingDataPresenter
temel alınarak oluşturulabilir.LoadStates
öğesinin sırasıyla Hata veyaNotLoading
durumunda olup olmadığını kontrol etmek içinhasError
veisIdle
için yeniLoadStates
veCombinedLoadStates
yardımcı yöntemleri eklendi. AyrıcaFlow<CombinedLoadStates>
cihazına, yüklemeNotLoading
veya Hata durumu olarak düzeltilene kadar bekleyecek yeni birawaitNotLoading()
Kotlin uzantı yöntemi eklendi.PagingData.empty()
, kurucusuna özelLoadStates
iletilmediği sürece artıkNotLoading
durumlarını varsayılan olarak gönderiyor. Bu,PagingDataAdapter
öğesine gönderildiğindeLoadStates
öğesinin gönderilmediği veyaLazyPagingItems
olarak toplandığında Yükleme durumlarını yayınladığı mevcut davranıştan ayrılır.LazyPagingItems
olarak toplandığında artık ilk bestenin hemen ardından boş bir liste de gösterilecek.
Kotlin Çoklu Platform Uyumluluğu
Büyük ölçüde CashApp'in multiplatform-paging projesindeki yukarı akışlı çalışmaların da etkisiyle artık Kotlin Multiplatform ile uyumlu olan yapılar artık PageSpeed'e iletiliyor.
paging-common
, tüm Paging 3 API'lerinicommon
hedefine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.paging-testing
, kodunucommon
öğesine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.paging-compose
, kodunucommon
platformuna taşıdı veandroidx.compose
adlı uygulamanın çoklu platform desteğiyle eşleşen bir Android yapısı gönderdi.paging-runtime
,paging-guava
,paging-rxjava2
vepaging-rxjava3
yalnızca Android'de kalacak.
Sürüm 3.3.0-rc01
1 Mayıs 2024
androidx.paging:paging-*:3.3.0-rc01
, Sayfa 3.3.0-beta01'de herhangi bir değişiklik yapılmadan yayınlandı. Sürüm 3.3.0-rc01 bu kayıtları içerir.
Sürüm 3.3.0-beta01
3 Nisan 2024
androidx.paging:paging-*:3.3.0-beta01
herhangi bir önemli değişiklik yapılmadan yayınlandı. Sürüm 3.3.0-beta01 bu taahhütleri içerir.
Sürüm 3.3.0-alpha05
20 Mart 2024
androidx.paging:paging-*:3.3.0-alpha05
yayınlandı. Sürüm 3.3.0-alpha05 bu kaydetmeleri içerir.
API Değişiklikleri
- Sayfalamada artık ortak kodlar için AndroidX Ek Açıklaması
@MainThread
ek açıklaması kullanılıyor. (I78f0d, b/327682438)
Sürüm 3.3.0-alpha04
6 Mart 2024
androidx.paging:paging-*:3.3.0-alpha04
yayınlandı. Sürüm 3.3.0-alpha04 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Kotlin çoklu platform uyumluluğunun eklenmesiyle ilgili küçük belge hataları düzeltildi. (aosp/2950785)
Sürüm 3.3.0-alpha03
7 Şubat 2024
androidx.paging:paging-*:3.3.0-alpha03
yayınlandı. Sürüm 3.3.0-alpha03 bu kaydetmeleri içerir.
Yeni Özellikler
PagingDataPresenter
artık herkese açık bir sınıf. Çoklu platform sunucuları artık dahili Paging API'lerine veyapaging-runtime
AsyncPagingDataDiffer
öğesine gerek kalmadanPagingDataPresenter
temel alınarak oluşturulabilir. (Id1f74, b/315214786)LoadStates
öğesinin Hata veyaNotLoading
durumunda olup olmadığını kontrol etmek için yeniLoadStates
veCombinedLoadStates
yardımcı yöntemleri eklendi. Ayrıca, bir yükNotLoading
veya Hata durumuna gelene kadarLoadStateFlow
üzerinde bekleyecek yeni bir API de eklendi. (Id6c67)
Davranış değişikliği
PagingData.empty()
, kurucusuna özelLoadStates
iletilmediği sürece artıkNotLoading
durumlarını varsayılan olarak gönderiyor. Bu,PagingDataAdapter
öğesine gönderildiğindeLoadStates
öğesinin gönderilmediği veyaLazyPagingItems
olarak toplandığında Yükleme durumlarını yayınladığı mevcut davranıştan ayrılır.LazyPagingItems
olarak toplandığında artık ilk bestenin hemen ardından boş bir liste de gösterilecek. (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 kaydetmeleri içerir.
Kotlin Çoklu Platform Uyumluluğu
Büyük ölçüde CashApp'in multiplatform-paging projesindeki yukarı akışlı çalışmaların da etkisiyle artık Kotlin Multiplatform ile uyumlu olan yapılar artık PageSpeed'e iletiliyor. Bu, iki depo arasındaki farklılaşmayı önlememize ve bunları uyumlu tutmamıza olanak tanır.
paging-common
, tüm Paging 3 API'lerinicommon
hedefine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.paging-testing
, kodunucommon
öğesine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.paging-compose
, kodunucommon
platformuna taşıdı veandroidx.compose
adlı uygulamanın çoklu platform desteğiyle eşleşen bir Android yapısı gönderdi.paging-runtime
,paging-guava
,paging-rxjava2
vepaging-rxjava3
yalnızca Android'de 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ı
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ısı var. macOS, iOS ve Linux varyantları için3.3.0-alpha02
değerini 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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Yükleme tamamlandığında (
PagingData.from(List, LoadStates)
aşırı yükünden farklı olarak)asSnapshot()
öğesi hakkında bilgi bulunmaması nedeniyle, Sayfalama Testi yapısınınasSnapshot()
API'sininPagingData.from(List)
kullanılarak oluşturulan bir Akıştan geçildiğinde takılı kalması sorunu 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
içinLoadStates
sağlayanPagingData.from
aşırı yüklemesini kullanın). (I502c3) - Oluşturma sayfası, yeni verilerin yükleme tamamlanırken aynı çerçevede kullanılabilir olmasını sağlamak için artık dahili olarak
AndroidUiDispatcher.Main
kullanıyor. (Ia55af)
Sürüm 3.2.0
26 Temmuz 2023
androidx.paging:paging-*:3.2.0
yayınlandı. Sürüm 3.2.0 bu kaydetmeleri içerir.
3.1.0'dan bu yana önemli değişiklikler
- Compose'un bulunduğu sayfa, API kararlılığına ulaştı ve Sayfalama'nın geri kalanıyla birleştirildi. Buradaki sürüm artık diğer tüm Sayfalandırma yapılarıyla eşleşir. 3.1.0 sürümünden bu yana yapılan değişiklikler şunlardır:
- Bir
PagingData.from(fakeData)
oluşturup buPagingData
öğesini birMutableStateFlow
içine sarmalayarak sahte veriler listesini önizleme (ör.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
) desteği. Önizlemek için bu akışıcollectAsLazyPagingItems()
için alıcı olarak@Preview
composable'a iletin. LazyVerticalGrid
veHorizontalPager
gibi tüm geç düzenlerin yanı sıra Wear ve TV kitaplıklarındaki özel geç bileşenleri için destek. Bu,key
vecontentType
parametreleriniLazyColumn
veLazyVerticalGrid
için zaten mevcut olan standartitems
API'lerinin yanı sıraHorizontalPager
gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olan yeni alt düzeyLazyPagingItems
uzantı yöntemleriitemKey
veitemContentType
ile elde edildi.- Yalnızca
LazyListScope
desteği olanitems(lazyPagingItems)
veitemsIndexed(lazyPagingItems)
desteği sonlandırıldı.
- Bir
- Uygulamanızın her katmanını test etmeye ve bunun tek başına Sayfalandırma ile entegrasyonuna dayalı olarak tasarlanmış API'ler sağlayan yeni
paging-testing
yapısı. Örneğin,- 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ını kullanabilirsiniz. Flow<List<Value>>
veya statikList<Value>
öğesini testlerde Çağrı Cihazı'na iletilebilecek birPagingSourceFactory
biçimine dönüştürmek için kullanılanasPagingSourceFactory
API'leriFlow<PagingData<Value>>
içinasSnapshot
Kotlin uzantısı. Bu uzantı,Flow<PagingData<Value>>
parametresini doğrudanList<Value>
diline ç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, sayfalandırılmış veri kümenizdeki herhangi bir noktada verilerin anlık görüntüsünün doğru olduğunu doğrulayabilirsiniz.
- Kendi özel
- Sayfalama hata ayıklama bilgilerini iki düzeyde gösterecek şekilde varsayılan günlükler eklendi:
VERBOSE
veDEBUG
. Günlükler,adb shell setprop log.tag.Paging [DEBUG|VERBOSE]
komutuyla etkinleştirilebilir. Bu durum hem görünüm içeren sayfalara ayırma hem de Oluşturma ile sayfalara ayırma için geçerlidir. PagingDataAdapter
veAsyncPagingDataDiffer
içinCoroutineDispatcher
yerineCoroutineContext
kabul eden kurucular eklendi.- Öncekine () göre daha açık bir API yüzeyi sağlayan yeni bir
PagingSourceFactory
işlevsel arayüzü eklendi ->PagingSource
lambda. Bu fabrika, Çağrı Cihazı örneği oluşturmak 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 kaydetmeleri içerir.
Harici Katkı
- Sayfalama'nın Android/JVM özellerinden uzaklaşmasına katkılarından dolayı Veyndan'a teşekkür ediyoruz. (#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 kaydetmeleri içerir.
İleti Oluşturma
- Compose sayfası, resmi olarak API kararlılığına ulaştı. Bu nedenle
1.0.0-alpha20
olan sürüm, artık diğer tüm Sayfalandırma 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 Oluşturma Sayfası'ndan kaldırıldı. Bunların yerine geçecek API'lerin bir örneğini 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'larına göre daha açık bir API yüzeyi sağlayan yeni birPagingSourceFactory
işlevsel arayüzü eklendi. Bu fabrika,Pager
örneği oluşturmak için kullanılabilir. (I33165, b/280655188) - Yalnızca sabit veri listesinden yüklenen bir
PagingSourceFactory
elde etmek içinList<Value>.asPagingSourceFactory()
öğesine yenipaging-testing
API eklendi.Flow<List<Value>>
üzerindeki mevcut uzantı, birden fazla nesil statik veriyle test yapmak için kullanılmalıdır. (Id34d1, b/280655188)
API Değişiklikleri
- Sayfalama testindeki tüm herkese açık API'lerin yalnızca testlerde kullanıldığından emin olmak için artık
@VisibleForTesting
ile ek açıklama veriliyor. (I7db6e) asSnapshot
API artık birCoroutineScope
öğesinin iletilmesini gerektirmiyor. Artık varsayılan olarak, üst kapsamından devralınan bağlamı kullanıyor. (Id0a78, b/282240990)TestPager
kurucu parametreleri, gerçekPager
oluşturucu parametrelerinin (I6185a) düzeniyle sezgisel olarak eşleşecek şekilde yeniden sıralandı- Sayfalandırma testinin
() -> PagingSource<Key, Value>
lambda türü kullanımıPagingSourceFactory<Key, Value>
türüne taşındı. (I4a950, b/280655188)
Davranış Değişiklikleri
- Artık ana sevk görevlisinin
asSnapshot
Çağrı testlerini çalıştırması gerekmiyor. Bunu ayarladığınızda test davranışında artık 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ı. 3.2.0-alpha05 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
asSnapshot
ürününün Paging Testing API'si artıkloadOperations
parametresini varsayılan olarak boş bir lambda olarak ayarlıyor. Böylece, ilk yenileme yükünden verileri almak için herhangi bir yükleme işlemi geçirmedenasSnapshot
çağrısına izin verilir. (Ied354, b/277233770)
Belgelerdeki İyileştirmeler
asPagingSourceFactory()
ile ilgili dokümanlar, bu yönteminPagingSource
örnek oluşturmak için yeniden kullanılabilir bir fabrika değeri döndürenFlow
üzerinde bir uzantı yöntemi olduğunu netleştirecek şekilde güncellendi. (I5ff4f, I705b5)- Atlamayı desteklemek için
itemsBefore
veitemsAfter
geçersiz kılmalarının geçersiz kılınması gerektiğini açıklığa kavuşturmak içinLoadResult.Page
oluşturucudaki dokümanlar güncellendi. (Ied354)
Harici Katkılar
- Sayfalama'nın Android/JVM özellerinden uzaklaşmasına katkılarından dolayı Veyndan'a teşekkür ediyoruz. (#525, #523, #520, #519, #507, #506, #505, #499, #497, #496, #493) tıklayın.
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 kaydetmeleri içerir.
Çağrı Testi
paging-testing
yapısı artık Çağrı Cihazı'na sağlanacakFlow<List<Value>>
öğesindenpagingSourceFactory
oluşturmak içinasPagingSourceFactory
yöntemini içeriyor. Akıştan yayınlanan herList<Value>>
, sayfalandırılmış verilerin oluşturulmasını temsil eder. Bu, örneğin Çağrı Cihazı'nın veri toplaması için gereken veri kaynağını taklit ederekPagingData
dönüşümlerinde sayfalandırma testlerini kolaylaştırır. (I6f230, b/235528239)paging-testing
yapısı,Flow<PagingData<T>>
öğesinde 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ı doğrulamak için kullanılabilir.Bu işlem,
Flow<PagingData<Value>>
adresindekiasSnapshot
Kotlin uzantısıyla yapılır. Kotlin uzantısı,Flow<PagingData<Value>>
değerini doğrudanList<Value>
diline dönüştürür.asSnapshot
lambda, uygulamanızın kullanıcı arayüzünüscrollTo
veyaappendScrollWhile
gibi API'ler üzerinden tekrarlanabilir ve tutarlı bir şekilde taklit etmenize olanak tanır. Böylece, sayfalandırılmış veri kümenizin herhangi bir noktasında verilerin anlık görüntüsünün doğru olduğunu doğrulayabilirsiniz.// Create your ViewModel instance val viewModel = … // Get the Flow of PagingData from the ViewModel val data< Flow<PagingData<String>> = viewModel.data val snapshot: List<String> = data.asSnapshot { // Each operation inside the lambda waits for the data to settle before continuing scrollTo(index = 50) // While you can’t view the items within the asSnapshot call, // you can continuously scroll in a direction while some condition is true // i.e., in this case until you hit a placeholder item appendScrollWhile { item: String -> item != “Header 1” } } // With the asSnapshot complete, you can now verify that the snapshot // has the expected values
asSnapshot
,runTest
içinde çalışması 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, {169,
API Değişiklikleri
AsyncPagingDataDiffer
vePagingDataAdapter
içindegetItem
vepeek
için yapılan kullanıcı arayüzü çağrıları artık ana ileti dizisinde doğru şekilde tek çağrılabilir olarak işaretleniyor. (I699b6)TestPager
tarafından kullanılan genel türlerdeki joker karakterler kaldırıldı. Böylece, bu yöntemlerin sonuçlarının Java programlama dilinde yazılmış kod kullanılarak alınması kolaylaştırıldı. (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 kaydetmeleri içerir.
Çağrı Testi
Bu sürüm yeni bir yapı içeriyor: paging-testing
. Bu yapı, uygulamanızın her katmanını birim test etme ve bunun tek başına Sayfalama ile entegrasyonu etrafında 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 sayfalandırma entegrasyonunu simüle etmek için ihtiyaç duyacağınız 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 olarak düşünülmelidir. Bu, Pager
öğesinin gerçek uygulamasını yansıtırken PagingSource
testi için basitleştirilmiş bir API yüzeyi sağlayan test çifti olarak değerlendirilir. Bu API'ler suspend
API'leridir ve Android'de Kotlin eş yordamlarını test etme rehberinde açıklandığı gibi runTest
içinde çalıştırılmalıdır.
Bu API'lerin kullanımdaki örneklerini, TestPager
kullanacak şekilde yeniden düzenlenen room-paging
testlerinde bulabilirsiniz.
API Değişiklikleri
LoadResult.Page.data
ileLoadResult.Page.iterator()
arasında uygun yinelemeyi sağlar. Bu,PagingSource.getRefreshKey
yöntemine iletilenPagingState
pages
özelliği gibi birList<LoadResult.Page>
sağlandığında 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ı. 3.2.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Sayfalama,
PagingData
ürününden toplanan hata ayıklama bilgilerinin gösterilmesi için artıkAsyncPagingDataDiffer
veyaPagingDataAdapter
sınıfları aracılığıyla günlükleri sağlamaktadır. - Günlükler,
adb shell
komutuylaadb shell setprop log.tag.Paging [DEBUG|VERBOSE].
etkinleştirilebilir(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ılırken 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 kaydetmeleri 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
adlı kullanıcıyı artık etkilemeyecek.LoadStates
ayarının mevcut davranışını tam olarak terminal (yanisourceLoadStates
remoteLoadStates
NotLoading(endOfPaginationReached = false)
) ekleyebilirsiniz.LoadStates
geçmezse öncekiCombinedLoadStates
, statikPagingData
aldığında sunucu tarafında korunur. (Ic3ce5, b/205344028)
Hata Düzeltmeleri
- Boş değeri döndüreceği ancak boş olmayan bir
initialKey
ayarlandığı durumlardaPagingSource.getRefreshKey()
sonucu,initialKey
üzerinden artık doğru şekilde öncelik sırasına koyuldu. (Ic9542, b/230391606)
Harici Katkı
- test-coroutines-lib taşıma işlemi nedeniyle (I3366d) :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 kaydetmeleri içerir.
Hata Düzeltmeleri
.cachedIn()
tarafından yanlış şekilde eklenen nesiller arasındaki araLoadState.NotLoading
etkinlikleri kaldırıldı. Bu değişiklik, yeniden başarısız yüklemeler, yenileme veya geçersiz kılma sırasında oluşturulan gereksizLoadState.NotLoading
etkinliklerini kaldırarakLoadState
değişikliklerine tepki vermeyi çok daha kolay hale getirir.
Sürüm 3.1.0
17 Kasım 2021
androidx.paging:paging-*:3.1.0
yayınlandı. 3.1.0 sürümü bu kaydetmeleri içerir.
3.0.0'dan bu yana önemli değişiklikler
Flow<PagingData>.observable
veFlow<PagingData>.flowable
API'leri artık deneysel değil- Davranış
LoadState
olarak değişir:endOfPaginationReached
artık hemPagingSource
hem deRemoteMediator
içinLoadType.REFRESH
için her zamanfalse
- Sayfalamadan
LoadStates
özelliği artık aşağı akış yayınlamadan önce hemPagingSource
hem deRemoteMediator
kaynaklı geçerli değerler bekliyor. Artık yeni nesilPagingData
sürümleri, bazı durumlarda hatalı şekildeNotLoading
değerine sıfırlamak yerine yenileme durumu için her zaman doğru şekildeLoading
ile başlayacak. - Sunucu API'lerindeki
.loadStateFlow
ve.addLoadStateListener
artık her zaman arabulucu durumlarınull
olarak ayarlanmış bir başlangıçCombinedLoadStates
öğesini yedek olarak göndermiyor
- Artık geçmiş nesillerde iptal işlemleri, geçersiz kılma / yeni nesiller için yoğun bir şekilde gerçekleştiriliyor. Her ne kadar önerilse de artık
Flow<PagingData>
sitesinde.collectLatest
kullanmak zorunlu olmayacaktır. PagingSource.LoadResult.Invalid
,PagingSource.load
kaynağından yeni bir dönüş türü olarak eklendi. Bu durum, Sayfalama özelliğinin 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 verileri işleyecek şekilde 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 senaryolarda gerçekleşebilir:- Yeni nesil PagingData'nın sunulan öğelerde herhangi bir değişiklik içerip içermediğine bakılmaksızın yeni nesil PagingData'nın ilk yüklemesi tamamlanır. ör. Liste tamamen aynı olduğundan ilk yüklemeyi hiçbir güncelleme olmadan tamamlayan yeni nesil, bu geri çağırmayı tetikler.
- Eklenen sayfa yeni öğe içermese bile sayfa eklenir.
- Bir sayfa, bırakılan sayfa boş olsa bile 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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Gözlemci yokken veya bir gözlemcinin yeni bir PagingData'ya geçiş yaptığı sırada aşağı akışta Sayfalama tarafından birden fazla yükleme etkinliğinin gönderilmesi durumunda .cachedIn() işlevinde 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ı. Sürüm 3.1.0-beta01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Birçok hızlı öğe erişiminin, bunların prefetchReach'te değerlendirilmek üzere atılmasına ve sayfa yüklemelerinin duraklamasına neden olabileceği sorun düzeltildi. Bu durum özellikle, birçok öğenin aynı anda ve kullanıcının kaydırma yönüne göre yüklemeye öncelik verecek şekilde yerleştirilmesi durumunda ortaya çıkar. Bu öğe erişimleri artık arabelleğe alınıyor ve atılmasını önlemek için eşzamanlı olarak öncelik veriliyor. (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ü bu kaydetmeleri 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
artık her zamanfalse
LoadType.REFRESH
için. Eskiden yalnızcaREFRESH
RemoteMediator için endOfPaginationReachtrue
oldu, ancak PagingSource için. Bu davranış artık her zaman döndürülecek şekilde birleştirildifalse
için REFRESH'in terminal olması hiçbir zaman anlamlı değildir ve şu anda LoadStates'te API sözleşmesinin bir parçası olarak belgelenmiştir. Projenin genel olarak sayfalara ayırma işlemi sonlandırıldığında, bunu her zaman UYGULA veya BAŞA EKLEYİN talimatlarından birini seçin. (I047b6) Sayfalamadaki LoadStates değerleri artık her ikisinden de geçerli değerler bekliyor PagingSource ve RemoteMediator arasında aşağı akış yapmadan önce nesillerdir. Bu işlem, yeni nesil PagingData'nın gönderilmesini engeller Önceden yapılmışsa MergedLoadStates.source.refresh konumunda NotLoading Yükleniyor; yeni nesil PagingData'lar artık her zaman doğru şekilde başlatılacak Önce NotLoading durumuna sıfırlamak yerine yenileme durumu için Yükleme ile bazı durumlarda hata yapabilir.
Geçmiş nesillerde iptal işlemleri artık istekli bir şekilde geçersiz kılma / yeni nesiller. Artık .collectCollect'in kullanılması için artık gerekli olmamalıdır. üzerinde
Flow<PagingData>
bulun. Ancak yine de önemle tavsiye edilir. (I0b2b5, b/177351336, b/195028524)Sunucu API'lerinde
.loadStateFlow
ve.addLoadStateListener
artık her zaman yedeklenmiş bir başlangıçCombinedLoadStates
'sı göndermemeli arabulucu durumlarınull
ve kaynak durumlarıNotLoading(endOfPaginationReached = false)
. Bunun anlamı:- RemoteMediator'ı kullanırsanız aracı durumları her zaman doldurulur.
-
.loadStateFlow
, geçerli değeri hemen uygulamayacak veya web sitenizden gerçek birCombinedLoadStates
PagingData
. Bu durum, bir toplayıcı veya dinleyicininPagingData
gönderilmeden önce işlem yapın. (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 Kaynağı. Bir PagingSource.load döndüğünde LoadResult.Geçersiz, sayfalara ayırma işlemi, yüklenen verileri siler ve PagingSource'u geçersiz kılar. Bu dönüş türü şunun için tasarlanmıştır: döndürülebilecek geçersiz veya eski verileri işleme veri tabanından veya ağdan.
Örneğin, temel veritabanının yazımı ile PagingSource, zamanı geçersiz kılmaz, döndürebilir tutarsız sonuçlar da veri kümesinin kaynak veri kümesinin sabitliği (ör. LIMIT OFFSET stili db uygulamaları). Bu senaryoda yüklemenin ardından geçersiz kılmayı kontrol etmeniz ve loadResult.Geçersiz hatası döndürerek, Sayfalama'nın bu PagingSource'a yönelik bekleyen veya gelecekteki yükleme istekleri geçersiz kılar.
Bu dönüş türü, Paging2 API tarafından da desteklenir. LivePagedList veya RxPagedList gibi olduğundan emin olun. PagingSource ile birlikte Paging2'nin PagedList API'leri, PagedList hemen çıkarılır, Böylece, bu PagedList'e veri yüklemek için daha fazla girişimde PagingSource'ta geçersiz kılmayı tetikler.
LoadResult, kapalı bir sınıftır, yani kullanım alanlarının doğrudan PagingSource.load sonuçlarının, LoadResult.Geçersiz sırasında görünür. Örneğin, 2021 yılından bugüne kadar Kapsamlı-ne zaman iade türünün kontrol edileceğine dair bir kontrol eklemesi gerekir geçersiz tür. (Id6bd3, b/191806126, b/192013267)
Hata Düzeltmeleri
- Geçersiz kılma geri çağırmaları, üzerinden eklendi PagingSource.registerGeçersizatedCallback veya DataSource.add InvalidatedCallback artık şu durumlarda otomatik olarak tetikleniyor: önceden ayarlanmış bir PagingSource / Veri Kaynağı'nda kayıtlı geçersiz. Bu da sayfa değerinin düşmesine neden olan bir yarış sorununu çözer olarak ayarlanmış bir Kaynak sağlandığında, geçersiz kılma sinyallerinin İlk yükleme sırasında zaten geçersiz. Ayrıca, artık geri çağırma işlevleri, tetiklendikten sonra en fazla bir kez aranacağı garanti edilir. (I27e69)
- Yeni oluşturulan PagedList akışından yer tutucu başlangıç değerini (InitialPagedList) 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ı. 3.1.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
onPagesServeed dinleyici ve akış sunucusu API'leri eklendi Bunlar, kullanıcı arayüzünde sunulan sayfalar güncellendikten hemen sonra tetiklenir.
Bu güncellemeler kullanıcı arayüzü ile eşzamanlı olduğundan bağdaştırıcı yöntemlerini çağırabilirsiniz. (ör. .snapshot, .getItemCount gibi) güncelleme uygulandı. .snapshot() işlevinin her güncellemede yapılması pahalı olabileceğinden açıkça çağrılır.
Sayfa güncellemeleri aşağıdaki senaryolarda gerçekleşebilir:
- Yeni nesil PagingData'nın ilk yüklemesi tamamlanır. yeni nesilde içerikte herhangi bir değişiklik olup olmadığına bakılmadan sunum yapılacak öğeler. ör. İlk yüklemeyi tamamlayan yeni nesil herhangi bir güncelleme olmadığından, liste tamamen aynı olduğu için bu geri çağırmayı tetikleyin.
- Eklenen sayfa yeni bir sayfa içermese bile sayfa ekleniyor öğe
- Bir sayfa, boş olsa bile atlanıyor (I272c9, b/189999634)
Hata Düzeltmeleri
- Oluşturulan ilk değerden PagedList.dataSource'a erişme LivePagedList veya RxPagedList tarafından yanlış bir şekilde Yasadışı Durum İstisnası (I96707)
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 kaydetmeleri içerir.
API Değişiklikleri
paging-rxjava3
tarafından sağlanan sınıflar artık ile çakışmamaları içinandroidx.paging.rxjava3
paketipaging-rxjava2
(Ifa7f6)
Hata Düzeltmeleri
- Sayfalandırmanın bazen işlem yok farklılığı göndermesine neden olan sorun düzeltildi etkinlikleri RecyclerView'a gönderir. Bu işlem, belirli dinleyicilerin gerekiyor. (Ic507f, b/182510751)
Harici Katkı
- Desteği sonlandırılan PagedList uyumlu API'ler, rxjava3 yapısına eklendi (Id1ce2, b/182497591)
Sayfa Oluşturma Sürüm 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 kaydetmeleri içerir.
Yeni Özellikler
- Oluşturma sayfasında artık bir
PagingData.from(fakeData)
oluşturup buPagingData
öğesini birMutableStateFlow
(ör.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
) bilgileri gösterilir. Bu verileri@Preview
girdisi olarak kullandığınızda,collectAsLazyPagingItems()
için yapılan çağrılar önizlenebilirLazyPagingItems
sağlar. (I8a78d, b/194544557)
Hata Düzeltmeleri
LazyPagingItems
ürününde toplananpager.flow.cachedIn
önbelleğine alınmış veriler, artık durum geri yüklendikten sonra eşzamansız toplama gerekmeksizin kullanılabilir hale gelecektir. Bu, durum geri yüklendikten sonra, önbelleğe alınan verilerin ilk bestenin hemen ardından sunuma hazır olacağı anlamına gelir. (I97a60, b/177245496)
Sürüm 1.0.0-alpha19
3 Mayıs 2023
androidx.paging:paging-compose:1.0.0-alpha19
yayınlandı. Sürüm 1.0.0-alpha19 bu kaydetmeleri içerir.
Tüm geç düzenleri destekleme
Yazma Sihirbazı, daha önce LazyListScope
tarihinde özel items
ve itemsIndexed
uzantılarını sağlıyordu. Yani, Sayfa Yazma Sihirbazı'nı LazyVerticalGrid
, HorizontalPager
gibi diğer geç düzenlere veya Wear ve TV kitaplıklarının sağladığı diğer özel geçki bileşenlerle kullanamazsınız. Bu sürümde yapılan temel güncelleme, bu esnekliksizliği ortadan kaldırmaktır.
Daha geç düzeni 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 Oluşturma mesajı, itemKey
ve itemContentType
için LazyPagingItems
için biraz daha düşük düzeyli uzantı yöntemleri sunuyor. Bu API'ler, key
ve contentType
parametrelerini LazyColumn
ve LazyVerticalGrid
için zaten mevcut olan standart items
API'lere ve HorizontalPager
gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olmaya odaklanır. (Ifa13b, Ib04f0, b/259385813)
LazyVerticalGrid
için destek şu şekilde olacaktı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 örneklerimize göz atın.
Bu değişiklikler LazyColumn
ve LazyRow
örneklerini birkaç satır uzatsa da, tüm geç düzenlerdeki tutarlılığın, Sayfa Oluşturma Oluşturma özelliğini kullananlar için önemli bir faktör olduğunu hissettik. Bu nedenle, mevcut LazyListScope
uzantıları kullanımdan kaldırılmıştır. (I0c459, I92c8f, b/276989796)
API Değişiklikleri
- Yeni API'lere geçişi kolaylaştırmak için
LazyListScope
üzerindekiitems
veitemsIndexed
uzantısı artık yeni API'lerdeki desteği yansıtancontentType
parametresini desteklemektedir. (Ib1918, b/255283378)
Bağımlılık Güncellemeleri
- Compose'da, Compose 1.0.5 olan bağımlılığı Compose 1.2.1 olarak 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 yayınlandı. 1.0.0-alpha18 sürümü bu kaydetmeleri 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 kaydetmeleri içerir.
Yeni Özellikler
collectLazyPagingItems
numaralı telefonu ararken özel birCoroutineContext
için destek 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 kaydetmeleri içerir.
Yeni Özellikler
- Sayfalandırma, artık PagingData'dan toplanan hata ayıklama bilgilerini açığa çıkarmak için
LazyPagingItems
sınıfı aracılığıyla günlükleri sağlamaktadır. - Günlükler,
adb shell
adb shell setprop log.tag.Paging [DEBUG|VERBOSE]
komutuyla etkinleştirilebilir. ([b/235527159}(https://issuestracker.google.com/issues/235527159))
Hata Düzeltmeleri
paging-common:3.1.1
veya daha eski bir sürümlepaging-compose:1.0.0-alpha15
kullanılırken oluşan 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 kaydetmeleri içerir.
API Değişiklikleri
PagingDataAdapter
veAsyncPagingDataDiffer
içinCoroutineDispatcher
yerineCoroutineContext
kabul eden kurucular eklendi. (Idc878)
Hata Düzeltmeleri
LazyPagingItems
, ilkloadState
değeriniLoadState.Loading
yenilemesi 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 kaydetmeleri 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 kaydetmeleri içerir.
API Değişiklikleri
LazyPagingItems.snapshot()
işlevi,LazyPagingItems.itemSnapshotList
özelliğiyle değiştirildi (Ie2da8)- 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 kaydetmeleri 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 sabit bir 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şlevinin desteği sonlandı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 kaydetmeleri 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 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ısı artık LazyVerticalGrid ile de kullanılabileceğinden gözlemlenebilir (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 kaydetmeleri 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ü bu kaydetmeleri içerir.
Compose'un alfa12 sürümüyle 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ü bu kaydetmeleri içerir.
Hata Düzeltmeleri
Oluşturma 1.0.0-alpha11 sürümüne 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 kaydetmeleri içerir.
Oluşturma 1.0.0-alpha10 sürümüne 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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Kolaylık özellikleri güncellendi,
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
, YalnızcaLoading
-NotLoading
arası geçiş içinCombinedLoadStates.append
hem aracı hem de kaynak yükleme durumlarından sonraNotLoading
durumundan sonra uzaktan güncelleme uygulandı. (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ü bu kaydetmeleri içerir.
- Oluştur 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ı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
.peek()
,.snapshot()
,.retry()
ve.refresh()
yöntemleri eklendi Aynı işlevleri sunanLazyPagingItem
AsyncPagingDataDiffer
/PagingDataAdapter
(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ü bu kaydetmeleri içerir.
Yeni Özellikler
paging-compose
yapısı, Sayfalama 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ı. Sürüm 3.0.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
LivePagedList
veyaRxPagedList
tarafından oluşturulan ilk değerdenPagedList.dataSource
erişimi artık yanlış bir şekilde Yasadışı Durum İstisnası (I96707) hatasına yol açmayacaktır
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 kaydetmeleri içerir.
3.0.0'ın temel özellikleri
Paging 2.x.x'teki mevcut API'nin çoğu, aşağıdaki iyileştirmeleri sağlamak üzere yeni Paging 3 API'lerinin yerini alacak şekilde kullanımdan kaldırılmıştır:
- Kotlin eş yordamları ve Akışı için birinci sınıf destek
- İptal desteği
- Yerleşik yükleme durumu ve hata sinyalleri
- Yeniden dene + yenileme işlevi
- Üç DataSource alt sınıfının tamamı, birleştirilmiş bir PagingSource sınıfında birleştirildi
- Ayırıcı eklemek için yerleşik bir dönüşüm 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ı. Sürüm 3.0.0-rc01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Sayfalandırmanın bazen işlem yok farklılığı göndermesine neden olan sorun düzeltildi etkinlikleri RecyclerView'a gönderir. Bu işlem, belirli dinleyicilerin gerekiyor. (Ic507f, b/182510751)
Sürüm 3.0.0-beta03
24 Mart 2021
androidx.paging:paging-*:3.0.0-beta03
yayınlandı. Sürüm 3.0.0-beta03 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Listeyi seçtiğinizde yer tutucuların beklenmedik atlamaları önlemek için yeniden yüklendi. Görüntüleyin Ayrıntılı bilgi için NullPaddedDiffing.md adresini ziyaret edin. (If1490, b/170027529, b/177338149)
- Çeşitli PagedList derleyicileri (eski uyumluluk yolu) artık
.build()
çağrıldığında, ana iş parçacığındaDataSource.Factory.create()
işlemini yanlış şekilde 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ı. Sürüm 3.0.0-beta02 bu kaydetmeleri içerir.
API Değişiklikleri
- Rx3 uzantıları artık doğru şekilde yayılıyor
@ExperimentalCoroutinesApi
Etkinleştirme şartı. Önceden bunlar@get
yönteminde işaretlendi. Bu işlem, Kotlin Derleyici tarafından yoksayılıyor. https://youtrack.jetbrains.com/issues/KT-45227 (I5733c)
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımıyla ilgili kısıtlamaları zorunlu kılın (I6aa29, b/174531520)
- Şu durumlarda
PagingState
öğesinin her zamannull
olmasına neden olan bir hata düzeltildi: uzaktan yenileme özelliği çağrılır. - PagingSource tarafından döndürülen boş sayfaların, Paging'in
prefetchDistance
yerine getirmek için tekrar getirmesini engelleyebileceği ve bu nedenle Paging'in "takılması" hatası düzeltildi.
Sürüm 3.0.0-beta01
10 Şubat 2021
androidx.paging:paging-*:3.0.0-beta01
yayınlandı. Sürüm 3.0.0-beta01 bu kaydetmeleri içerir.
API Değişiklikleri
- Rx2 ve Rx3 sarmalayıcıları artık deneysel ek açıklamayı
duruma göre değişir. paging-rxjava2 veya
paging-rxjava3 ise artık kullanımlara
@OptIn(ExperimentalCoroutinesApi::class)
(Ib1f9d)
Hata Düzeltmeleri
- Uyumluluk yollarıyla v2
DataSource
API'leri kullanılırkenIndexOutOfBoundsException: Inconsistency detected
öğesinin bazen kilitlenmesi sorunu düzeltildi - Uyumluluk yolları aracılığıyla kullanıldığında,
DataSource
başlatılırkenisInvalid
çağrısı artık ana iş parçacığı yerine fetchDispatcher'da başlatılmaktadır. Bu sorun, OdanınPagingSource
uygulaması kullanılırken ana iş parçacığında Db erişiminden kaynaklananIllegalStateException
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 kaydetmeleri içerir.
API Değişiklikleri
PagingSource.getRefreshKey
uygulamasının uygulanması isteğe bağlı değildir. artık varsayılan uygulaması olmayan soyut bir işleve dönüştü. Taşınan kullanıcılar, varsayılan değerleri döndürmeye devam edebilir ise şunu döndürür:null
, ancakgetRefreshKey()
kullanıcının isteklerine göre bir anahtar döndüren gerçek bir uygulama Sayfalamanın yüklemeye devam etmesine izin veren geçerli kaydırma konumuPagingState.anchorPosition
aracılığıyla görüntü alanının çevresinde ortalanır yapmasını sağlar. (I4339a)InvalidatingPagingSourceFactory
, artık nihai sınıf (Ia3b0a)- Terminal ayırıcısının (başlık / alt bilgi) yapılandırılmasına izin ver
ek bir isteğe bağlı SeparatorType parametresiyle İkisi
şunlardır:
FULLY_COMPLETE
- mevcut davranış; hem PagingSource hem de RemoteMediator, terminal eklemeden önce endOfPaginationReached'i işaretleyecek kullanabilirsiniz. RemoteMediator kullanılmazsa, uzak loadState yoksayıldı. Bu, özellikle yalnızca belirli bir bölümün veya oyununuzun ayırıcılar, bölüm tam olarak yüklendiğinden uzak kaynak, ör. ağ.SOURCE_COMPLETE
- yalnızca PagingSource'un işaretlemesini bekleyin RemoteMediator kullanılsa bile endOfPaginationReached. Bu da ilk başta eşzamanlı olarak sunulacak olan Bu, kullanıcıların terminali görmek için sayfayı kaydırmak zorunda kalmalarını önler kullanabilirsiniz. (Ibe993, b/174700218)
Hata Düzeltmeleri
- PagingSource aşağıdaki durumlarda ortaya çıkan nadir bellek sızıntısı düzeltildi: başlamadan önce geçersiz kılınır. (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 kaydetmeleri içerir.
API Değişiklikleri
- InvalidatingPagingSourceFactory artık soyut bir sınıf değil çünkü hiçbir zaman soyut yöntemleri yoktu. (I4a8c4)
- ViewModel'i kabul eden bir aşırı .cachedIn() yüklemesi eklendi yerine (I97d81, b/175332619)
- Java arayanlarının PagingData dönüştürme işlemlerini kullanmasına izin ver:
Yürütücüyü, dönüşüm operatörü olarak kabul ederek eş zamansız bir şekilde
bağımsız değişkenlerdir. Tüm -Sync dönüştürme operatörleri -Sync son ekine sahiptir
ve Kotlin eş yordam kullanıcılarının
bunun yerine, askıya alma engellemesini kabul eden uzantı işlevi çağrılır.
Tüm PagingData dönüştürme operatörleri uzantılara taşındı
altında, statik PagingDataTransforms sınıfının altında bulunabilir. Java kullanıcılarının
bunları statik yardımcılarla (ör.
PagingDataTransforms.map(pagingData, transform)
. Kotlin kullanıcıları için söz dizimi aynıdır ancak işlevini kullanın. (If6885, b/172895919)
Hata Düzeltmeleri
- Sayfalandırma süresinin sonuna ulaşılırsa
adapter.refresh()
sırasındaRemoteMediator.load()
işlevinin çağrılmamasına yol açan 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 kaydetmeleri içerir.
Yeni Özellikler
- Aşağıdaki temel kullanım alanları için kaydedilen durum desteği eklendi (özellikle katmanlı kaynak durumunda tam destek hâlâ 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, işlemde yeniden oluşturulur)
- sayfalama kaynağı sayılır, yer tutucular etkinleştirilir ve düzen en iyi uygulamaları paylaşacağız.
API Değişiklikleri
PagingSource.getRefreshKey()
artık kararlı bir API (I22f6f, b/173530980) olarak değiştiPagingSource.invalidate
artık açık bir işlev değil. Şu durumda: Geçersiz kılma gerçekleştiğinde bildirim almanız gerekiyorsa, "Geçersiz kılma" yöntemini geçersiz kılmayı tercih edebilirsiniz. (I628d9, b/173029013, b/137971356)- Pager artık Google Analytics 4'e deneysel API'leri sızdırmak yerine etkinleştirme ek açıklaması aracılığıyla deneysel olmayan, herkese açık API'yi kullanabilirsiniz. (I9dc61, b/174531520)
- Kolaylık özellikleri güncellendi,
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
- yalnızcaLoading
-NotLoading
hem aracı hem de kaynak yükleme durumlarından sonraNotLoading
durumundan sonra uzaktan güncelleme uygulandı. (I65619) LoadParams.pageSize kaldırıldı (zaten desteği sonlandırıldı). Öneri, PagingSource'unuzda
LoadParams.loadSize
kullanmanızdır.LoadParams.loadSize
her zamanPagingConfig.pageSize
değerine eşittir ilk yükleme çağrısı dışında,PagingConfig.initialLoadSize
.Paging2 DataSource'unuzu bir Çağrı Cihazı ya da PagedList,
pageSize
ile eşleşmeyebilir;PagingConfig.pageSize
initialLoadSize
ayarını da yapıyorsunuz. Bu, işletmeniz için önemliyse test etmek istiyorsanız bunun yerine dahili olarak ayarlanacak bir Pager/PagedList kullanmayı deneyin DataSource yükleme yöntemleriniz için doğru PageSize değerini yüklemelisiniz. (I98ac7, b/149157296)
Hata Düzeltmeleri
- Şu durumlarda LegalStateException hatasından kaynaklanan bir kilitlenme düzeltildi kullanmanızı öneririz. (I0ed33, b/174787528)
- BAŞA EKLEYİN / UYGULAMAYA ULAŞIN için yükleme durumunun gösterilmemesine neden olan hata düzeltildi
hemen
NotLoading(endOfPaginationReached = true)
olarak güncelle RemoteMediator ayarlanmışsa ilk yüklemeden sonra (I8cf5a) - .snapshot(), .peek() vb. 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 üst veya alt bilgi eklememesine neden olan hata düzeltildi
- Yükleme durumunun RemoteMediator için NotLoading olarak yapılan güncellemelerinin Yükleme durumunda kalmasına neden olan hata düzeltildi
- Paging2.0 uyumluluk API'sinin (
.asPagingSourceFactory()
) yanlış CoroutineDispatcher'da yedeklemeDataSource
başlatmasına neden olabileceği bir hata düzeltildi. Bu sayede, özellikle Room'da bu uyumluluk yolunu kullanan PagingSource'un kullanıldığı mevcut bir uygulama kullanılırken kilitlenme ve olası ANR durumları çözülür.
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 kaldırıldı çünkü loadStateFlow / İşleyici güncellemeleriyle gereksiz hale gelir. Örneğin, ise loadStateFlow eşdeğeri şu şekildedir:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
Hata Düzeltmeleri
REFRESH
RemoteMediator için endOfPaginationReached LoadState güncellemelerine doğru bir şekilde yayılır ve uzaktanAPPEND
vePREPEND
tetiklenmez. (I94a3f, b/155290248)- Başlangıç sayfasının boş olması veya
yoğun filtreleme, Sayfalama'nın
PREPEND
başlamasını artık engellemeyecek veyaAPPEND
yükleme. (I3e702, b/168169730) getRefreshKey
adlı kullanıcının çağrılmamasına neden olan sorun düzeltildi PagingSource'un yeni nesillere dayanmasını sağlar. (I45460, b/170027530)
Harici Katkı
- Yeni bir soyut sınıf InvalidatingPagingSourceFactory eklendi
Tüm PagingSources'a geçersiz kılma yönlendiren bir
.invalidate()
API ile için çok iyi bir seçim. @claraf3 adlı kullanıcıya teşekkürler! (Ie71fc, b/160716447)
Bilinen Sorunlar
- RemoteMediator b/172254056 kullanılırken, .insertSeparators() dönüşümündeki üstbilgi ve altbilgiler hemen görünmeyebilir.
- RemoteMediator'ın kullanılması, geçersiz kılma işleminin ve
PagingSource.load(LoadParams.Refresh(...))
RemoteMediator.load()
b/173717820 döndürülmeden önce tamamlanırsa uzaktanLoadState
ürünü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
- dataRefreshFlow / İşleyici yöntemlerini changeWith yan tümcesi. (I6e2dd)
Hata Düzeltmeleri
- RemoteMediator ile ayırıcılar kullanılırken
IllegalArgumentException
işlevinin atılması ve endOfPagination değerini döndürecek bir uzaktan yükleme hâlâ çalışırken bir geçersiz kılma tetikleniyor (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 kaydetmeleri içerir.
API Değişiklikleri
DataSource.InvalidatedCallback
için Kotlin / Java varyantları işlevsel aracılığıyla Kotlin'de SAM dönüşümleri etkinleştirilerek birleştirildi. arayüzü (Kotlin 1.4'te mevcuttur). Bu işlem, Geçersiz kılma geri çağırmalarının kotlin varyantı dönüştürüldükten sonra çağrılmadı.map
veya.mapByPage
tarafından. (I1f244, b/165313046)
Hata Düzeltmeleri
- Paging'in ViewPager ile etkileşimi önemli ölçüde iyileştirildi. Daha net bir ifadeyle, Sayfalama, bir sayfanın geçersiz kılınması nedeniyle artık
RemoteMediator#load
çağrısını iptal etmeyecek. Ayrıca, YENİLEME gerekiyorsa YENİLEME isteği başarıyla tamamlanana kadar ekleme/başa ekleme isteği göndermez. (I6390b, b/162252536) - androidx için kayıpGetterMatchingBuilder API lint kontrolü etkin (I4bbea, b/138602561)
.withLoadState*
ConcatAdapter
yardımcısının şunları yapacağı bir hata düzeltildi: RecyclerView'un arka plan iş parçacığından (I18bb5, b/170988309) bildirilmesi nedeniyle oluşan kilitlenme- Çok küçük ve boş olmayan bir sayfa yüklemenin 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ı. 3.0.0-alpha07 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Eş zamansız PagingData Guava tabanlı operatörler artık bir Yürütücü kabul ediyor parametre olarak kullanabilirsiniz. (Id4372)
Hata Düzeltmeleri
- Nedeniyle RemoteMediator'da IndexOutOfBounds istisnası atıldı bir yarış koşuluna dönüşebilir. (I00b7f, b/165821814)
- DataSource'ta bir yarış durumu düzeltildi -> PagingSource'un, DataSource'tan gelen geçersiz kılma sinyallerini yoksaymasına neden olabilecek PagingSource dönüşümü.
- Sayfa getirme mantığındaki bir sorun düzeltildi. Bu sorun bazen PagingDataAdapter.refresh() çağrılana kadar yeni nesil PagingSource'u alamamasına neden oluyordu.
- RemoteMediator ile birlikte, PagingSource'a dönüştürülmüş bir DataSource (Oda tarafından üretilen kaynak gibi) kullanılırken kaydırma konumunun kaybolmasına neden olan bir sorun düzeltildi
Harici Katkı
- PagingData için RxJava2, RxJava3 ve Guava tabanlı eşzamansız dönüştürme operatörlerini eklediği için @simonschiller'a 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 kaydetmeleri içerir.
API Değişiklikleri
UnsupportedOperationException
ve daha net mesajlar sabit kimliklere yönelik destek eksikliği ortaya çıkmıştır.PagingDataAdapter.setHasStableIds
çağrıldı. (Ib3890, b/158801427)
Hata Düzeltmeleri
- InsertSeparators artık boş sayfaları filtreleyerek hariç tutma önceden getirme mesafesine dikkat etmelisiniz. Örneğin, birçok boş sayfa eklenir. (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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Sayfalama, sunulan veriler yoğun bir şekilde filtrelendiğinde bile sayfaları artık doğru şekilde önceden getiriyor
LoadResult.Error
, yeniden denenen yükleme durumuna döndürüldüğünde artık öğe erişimlerinin yanlış şekilde yeniden tetiklemeyle yeniden tetiklenmesine neden olmuyor
Harici Katkı
- Bazı testlerin tamamlanmasına yardımcı olduğu için Clara F'ye teşekkürler! (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ü bu kaydetmeleri içerir.
API Değişiklikleri
peek()
API'siAsyncPagingDataDiffer
API'sine eklendi ve Tetikleyici sayfası olmadan sunulan veri erişimine izin vermek içinPagingDataAdapter
yükler. (I38898, b/159104197)PagingDataAdapter
içinsnapshot()
API ve Sunulan öğelerin alınmadan alınmasına izin vermek içinAsyncPagingDataDiffer
sayfa getirmeyi tetikliyor. (I566b6, b/159104197)- İzin verilecek bir
PagingData.from(List<T>)
oluşturucu eklendi statik listeler sunar. Bu listeler, Belirli durumlarda (ör. veya yalnızca dönüşümleri test etmek için REFRESH (yenileme) biter. (Id134d) - dataRefresh Flow / Dinner API'leri (olduğu gibi) kullanımdan kaldırın sunulan öğelerin REFRESH'te gösterilmesi amaçlanmıştır ancak loadState Akışı / İşleyici geri çağırma zamanlaması ve itemCount özelliğinde yapılan iyileştirmeler sayesinde bu gereksizdir (Ia19f3)
PagingSource
veRemoteMediator
için RxJava3 uyumluluk sarmalayıcıları eklendi (I49ef3, b/161480176)
Hata Düzeltmeleri
PositionalDataSource
, şu yollaPagingSource
haline dönüştürüldü: Oda tarafından oluşturulanPagingSource
dahiltoPagingSourceFactory
yardımcı atlamayı desteklemek için kendilerini doğru şekilde işaretleyebilirler. (I3e84c, b/162161201)- submitData öğesinin eşzamanlı varyantının kullanılmasına neden olan bir hata düzeltildi
bazen
ClosedSendChannelException
(I4d702, b/160192222) ile sonuçlanan bir yarışa neden olur
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ı. Sürüm 3.0.0-alpha03 bu kaydetmeleri içerir.
API Değişiklikleri
- PagingState kurucusu artık herkese açık olduğu için getRefreshKey() uygulamalarının test edilmesini daha kolay hale getirecektir (I8bf15)
- Java'dan DataSource kotlin haritası işlevi varyantları gizlendi orijinal ve kotlin varyantları arasındaki belirsizliği giderir. (If7b23, b/161150011)
- Kotlin kullanıcılarına kolaylık sağlamak için tasarlanmış gereksiz API'ler @JvmSynthetic (I56ae5) olarak işaretlendi
- LoadResult.Page kurucusu için aşırı yüklemeler eklendi hangi itemsBefore ve itemsAfter için COUNT_UNDEFINED varsayılanı (I47849) varsayılan olarak belirler.
- Mevcut PagingData operatörlerinin askıya alma yöntemlerini kabul etmesini sağladı ve yeni MapSync,Flat MapSync ve filterSync askıya alma işlemi özelliklerini kullanıma sunduk işlecini kullanır. Mevcut dönüştürme yöntemleri uzantı işlevlerine taşındığından Kotlin kullanıcılarının artık bunları içe aktarması gerekecek. (I34239, b/159983232)
Hata Düzeltmeleri
- Oda (ve PositionalDataSource) PagingSource'ları ilk sayfanın parçası olarak başında bir ayırıcı görüntüler, böylece kullanıcı bunun için sayfayı kaydırması gerekmez. (I6f747, b/160257628)
- Artık yer tutucularda öğe erişimleri PagingSource yüklemelerini doğru bir şekilde tetikleyin. istenen dizini karşılayan bir sayfa döndürüldü PagingData.filter() (I95625, b/158763195) tarafından dönüştürüldükten sonra
- Sonra bazen sayfayı kaydıran bir hata için düzeltme PagingSource, PagingDataAdapter.retry() işlevini engelleyebilecek bir hata döndürüyor engelleyebilir. (I1084f, b/160194384)
- Bir sayfa kaldırıldıktan sonra öğeye erişilmesine neden olan sorunu giderir. öğe erişimi prefetchReach kapsamında olmasına rağmen sayfaları yüklememelidir (Ie95ae, b/160038730)
- PagingConfig.maxSize ayarlandığında yer tutucular artık etkinleştirilmiyor düşüş etkinliğinden sonra (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 kaydetmeleri içerir.
API Değişiklikleri
PagingConfig
oluşturucusu için ortak varsayılan değerlere sahip aşırı yüklemeler eklendi (I39c50, b/158576040)PagingDataAdapter
ve oluşturucuları için aşırı yüklemeler eklendi Ortak varsayılan değerlerleAsyncPagingDataDiffer
(Ie91f5)- Bağdaştırıcı API'leri,
dataRefreshFlow
vedataRefreshListener
artıkPagingData
öğ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
- Yaygın öğe erişimi için PagingState'e yardımcı olan
isEmpty()
vefirstItemOrNull()
(I3b5b6, b/158892717) gibi yardımcılar eklendi
Hata Düzeltmeleri
- Pager artık geçersiz PagingSource'ların yanlışlıkla yeniden kullanılmasını önlemek için PagingSource'un fabrikada yeniden kullanılıp kullanılmadığını kontrol ediyor. Bu durum, net olmayan bir hataya neden oluyor (I99809, b/158486430)
- RemoteMediator REFRESH'ten gelen hatalar, PagingSource'un yüklenmesini artık engellemiyor (I38b1b, b/158892717)
submitData
öğesinin askıya alınmayan sürümü, şu durumlarda birden çokPagingData
cihazında eşzamanlı toplama nedeniyle artık kilitlenmeye neden olmuyorsubmitData
askıya alınan sürümünden sonra çağrıldı. (I26358, b/158048877)- "çağrı cihazından iki kez toplanamaz" sorunu düzeltildi yapılandırma değişikliğinden sonra oluşabilecek istisna (I58bcc, b/158784811)
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 kaydetmeleri içerir.
Sayfalandırma Kitaplığı, birkaç önemli yeni özelliği etkinleştirmek için 3.0 sürümüne güncellendi.
3.0'ın Yeni Özellikleri
- Kotlin eş yordamları ve Akışı için birinci sınıf destek.
- Eşzamanlı 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 dahil olmak üzere duyarlı kullanıcı arayüzü tasarımı için yerleşik yükleme durumu ve hata sinyalleri.
- Depo katmanında iyileştirmeler
- Basitleştirilmiş veri kaynağı arayüzü
- Basitleştirilmiş ağ + veritabanı sayfalandırması
- İptal desteği
- Sunu katmanında iyileştirmeler
Bilinen Sorunlar
- Sayfa 3 Javadocs henüz kullanılamıyor. Bu arada lütfen yukarıda bağlantısı verilen kılavuzları veya Kotlin dokümanlarını 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'a karşı bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Geçersiz kılma sırasında bir konum dönüştürülürken nadir görülen durumlarda
IndexOutOfBoundsException
için düzeltme yapın.
Sürüm sorunu
Sayfalandırma sürümü
2.1.1
, yanlış yapılandırılmış bir daldan yanlış bir şekilde yayınlandı. Bu durum, kısmen uygulanmış API'lerin ve gelecekteki bir sürümde kullanıma sunulacak işlevlerin açığa çıkmasına neden oldu.Sayfa
2.1.2
, ilk olarak 2.1.1 sürümünde kullanıma sunulan yükleme ortalama düzeltmesini içerir, ancak bu sefer 2.1.0 sürümünün üzerinden doğru bir şekilde seçilmiştir. Şu anda 2.1.1 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 kaydetmeleri içerir.
Hata düzeltmeleri
- PositionalDataSources'tan gelen ardışık ilk yüklemeler artık yer tutucular devre dışı bırakıldığında son erişim etrafında toplanıyor
Sürüm 2.1.0
Sürüm 2.1.0
25 Ocak 2019
2.1.0-rc01
tarihinden itibaren değişiklik yapılmadan 2.1.0
sayfası serbest bırakıldı.
Sürüm 2.1.0-rc01
6 Aralık 2018
2.1.0-beta01
tarihinden itibaren değişiklik yapılmadan 2.1.0-rc01
sayfası serbest bırakıldı.
Sürüm 2.1.0-beta01
1 Kasım 2018
2.1.0-alpha01
tarihinden itibaren değişiklik yapılmadan 2.1.0-beta01
sayfası serbest bırakıldı.
Sürüm 2.1.0-alpha01
12 Ekim 2018
2.1.0-alpha01
sayfasında iki önemli eklemenin yanı sıra başka birkaç API değişikliği ve hata düzeltmesi yapıldı: Sayfa bırakma ve her yapı için KTX uzantı kitaplığı.
API Değişiklikleri
- Bellekteki yüklenen öğelerin 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 geçen
PagedListAdapter.onCurrentListChanged()
varyant eklendi, önceki varyant desteği sonlandırıldı. - Farklılaştırmadan sonra, sayfalı liste gösterilirse/gösterildiğinde tetiklenen ek bir geri çağırmayı alan
PagedListAdapter/AsyncPagedListDiffer.submitList()
varyant eklendi. Bu, bir PagedList değişimini diğer kullanıcı arayüzü güncellemeleriyle senkronize etmenize olanak tanır. b/73781068 - Bellekte 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ırsa fark uygulanırken ortaya çıkan yarış durumu düzeltildi b/111591017
- Dizin geçersiz olduğunda
PagedList.loadAround()
, artıkIndexOutOfBoundsException
hatası veriyor. Önceden, belirsiz bir diğer istisna nedeniyle kilitleniyordu. - Çok küçük bir başlangıç yükleme boyutunun ve değişmeyen verilerle birlikte daha fazla yüklenmemesine neden olma durumu düzeltildi b/113122599
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 yer tutucular b/114635383 kullanılarak çok hızlı kaydırma yapıldığında oluşabilecek kilitlenme düzeltildi.
Sürüm 2.0.0-beta01
2 Temmuz 2018
Hata Düzeltmeleri
- Bazı başa ekleme durumlarında kaybolan içerik düzeltildi (yer tutucular devre dışı, PositionalDataSource) b/80149146
- (
1.0.1
sürümünde kullanıma sunuldu)PagedListAdapter
veAsyncPagedListDiffer
adlı uygulamanın, taşıma etkinliklerini bildiremediği kilitlenmeler düzeltildi. b/110711937
AndroidX Öncesi Bağımlılıkları
Sayfalama'nın takip eden AndroidX öncesi sürümleri için şu bağımlılıkları dahil edin:
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
sisteminde tek bir hata düzeltmesiyle yayınlandı. Kararlılık için 1.0.1
kullanmanızı önemle tavsiye ederiz. Sayfalandırma RxJava2 1.0.1
de yayınlandı ve 1.0.0-rc1
ile aynı.
Hata Düzeltmeleri
PagedListAdapter
veAsyncPagedListDiffer
adlı kullanıcıların, taşıma etkinliklerini işaret edemediği 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ısına göre, ilk sürümden itibaren herhangi bir değişiklik yapılmadan sürüm adayına geçiliyor
alfa
Sürüm 1.0.0
Sürüm 1.0.0-rc1
19 Nisan 2018 Sayfalama Sürüm Adayı
1.0.0
sürümünde notlandırma. 1.0.0-rc1
ve
savaşı test etmemize yardım edin. Böylece sağlam bir 1.0.0
gönderebiliriz.
Bu sürümde değişiklik yoktur. 1.0.0-beta1
ile aynı.
Sürüm 1.0.0-beta1
5 Nisan 2018
Sayfalama, adayı serbest bırakmaya geçmeden önce kısa bir süre için beta sürümünde olacaktır.
Paging 1.0
için daha fazla API değişikliği planlamıyoruz ve API değişiklikleri için çıta çok yüksek.
Sayfalandırma için Alpha RxJava2 desteği isteğe bağlı ayrı bir modül olarak kullanıma sunuldu (android.arch.paging:rxjava2:1.0.0-alpha1
)
ve stabil hale gelene kadar geçici olarak ayrı bir sürüm hazırlanacaktır.
Bu yeni kitaplık, LivePagedListBuilder
işlevine örnek olarak
Executor
yerine Scheduler
saniye süren Observable
ve Flowable
:
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ıyla eklendi.
API Değişiklikleri
Yürütücülerin derleyicilerdeki rolünü netleştirmek için yapılan 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
klasöründe).
PagedList.mCallbacks
üyenin gizli olduğu düzeltildi.
Hata Düzeltmeleri
LivePagedListBuilder
, belirtilen yürütücüde ilkPagedList
yüklemesini tetikler. tercih edebilirsiniz.Dahili
DataSource
sarmalayıcılarındaki geçersiz kılma davranışı düzeltildi (DataSource.map
, ayrıca yer tutucu devre dışıPositionalDataSource
yükleme) b/77237534
Sürüm 1.0.0-alpha7
21 Mart 2018
Yaşam Döngüleri 1.1.1
ile birlikte 1.0.0-alpha7
sayfası yayınlandı. Alfa7 sayfası, 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.
Sayfalandırmanın beta sürümü kullanıma sunulmadan önce, alpha7
sayfalamanın son sürüm olarak sunulması planlanıyor.
API Değişiklikleri
DataSource.LoadParams
nesne artık genel oluşturucuya sahip veDataSource.LoadCallback
nesne artık soyut. Bu, birDataSource
öğesinin sarmalanmasına veya birDataSource
öğesini sahte bir geri çağırma ile doğrudan test etmenize olanak tanır. b/72600421- DataSource ve DataSource.Factory Haritacılar
map(Function<IN,OUT>)
,DataSource
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.)
PagedList#getDataSource()
, kolaylık yöntemi olarak eklendi b/72611341recyclerview.extensions
paketi veLivePagedListProvider
kalıntıları da dahil olmak üzere, desteği sonlandırılmış 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 değiştirildi.
Hata Düzeltmeleri
- İnşaatçılar nihai olarak değiştirildi. b/70848565
- Oda
DataSource
uygulaması, birden çok tablolu sorguları işleyecek şekilde düzeltildi. Bu düzeltme Oda 1.1.0-beta1'de bulunmaktadır (yukarıya bakın). - Yer tutucuların etkin olması ve
PositionalDataSource
içinBoundaryCallback.onItemAtEndLoaded
çağrılmasını engelleyen bir hata düzeltildi. toplam boyut, sayfa boyutunun tam katıdır.
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
- Yasa Dışı ArgumentException hatasının (b/70360195) izlenmesi için ek günlük kaydı (ve oda tarafında tahmine dayalı düzeltme)
- Javadoc örnek kod düzeltmeleri b/70411933, b/71467637