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-alpha05 |
sayfalama-oluşturma | 3.2.1 | - | - | 3.3.0-alpha05 |
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ın 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-alpha05" }
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-alpha05") }
Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerini inceleyin.
Bağımlılıklar hakkında daha fazla bilgi edinmek için Derleme Bağımlılıkları Ekleme bölümüne bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 3.3
Sürüm 3.3.0-alpha05
20 Mart 2024
androidx.paging:paging-*:3.3.0-alpha05
yayınlandı. 3.3.0-alpha05 sürümü bu kayıtları içerir.
API Değişiklikleri
- Sayfalama artık ortak kod için AndroidX Ek Açıklaması
@MainThread
ek açıklamasını kullanıyor. (I78f0d, b/327682438)
Sürüm 3.3.0-alpha04
6 Mart 2024
androidx.paging:paging-*:3.3.0-alpha04
yayınlandı. 3.3.0-alpha04 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Kotlin çoklu platform uyumluluğunun eklenmesiyle ilgili küçük doküman hataları düzeltildi. (aosp/2950785)
Sürüm 3.3.0-alpha03
7 Şubat 2024
androidx.paging:paging-*:3.3.0-alpha03
yayınlandı. Sürüm 3.3.0-alpha03 bu kayıtları içerir.
Yeni Özellikler
PagingDataPresenter
artık herkese açık bir sınıf. Çoklu platform sunucuları artık dahili Sayfalama API'lerini veyapaging-runtime
AsyncPagingDataDiffer
API'lerini gerektirmek yerinePagingDataPresenter
temel alınarak oluşturulabilir. (Id1f74, b/315214786)LoadStates
öğesinin Hatalı mı yoksaNotLoading
durumunda mı olduğunu kontrol etmek için yeniLoadStates
veCombinedLoadStates
yardımcı yöntemleri eklendi. Ayrıca, bir yükNotLoading
veya Hata durumuna geçene kadarLoadStateFlow
üzerinde beklemeyi bekleyen yeni bir API eklendi. (Id6c67)
Davranış değişikliği
PagingData.empty()
, oluşturucusuna özelLoadStates
iletilmediği sürece artıkNotLoading
durumunu varsayılan olarak gönderir. Bu, birPagingDataAdapter
'a gönderildiğindeLoadStates
'yi göndermediği veyaLazyPagingItems
olarak toplandığında yükleme durumlarını göndereceği mevcut davranıştan ayrılır.LazyPagingItems
olarak toplandığında, artık ilk besteden hemen sonra boş bir liste de görüntülenecek. (I4d11d, b/301833847)
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 kayıtları içerir.
Kotlin Çoklu Platform Uyumluluğu
Çağrı, büyük ölçüde CashApp'in çok platformlu sayfalama projesinin yukarı akış çalışmaları sayesinde artık Kotlin Multiplatform ile uyumlu yapılar gönderiyor. Bu, iki depo arasında sapmayı önlememize ve bunları uyumlu tutmamıza olanak tanır.
paging-common
, tüm Sayfa 3 API'lerinicommon
uygulamasına taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.paging-testing
, kodunucommon
birimine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.paging-compose
, kodunucommon
adresine taşıdı veandroidx.compose
'ın çoklu platform desteğiyle eşleşen bir Android yapısı gönderiyor.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 Logger arayüzü kullanımdan kaldırılmıştır (I16e95, b/288623117)
Harici Katkı
- Cash App'ten veyndan'a, Paging'i Kotlin Multiplatform'a taşımaya yardımcı olduğu için teşekkür ederiz (#560, #561, #562, #573, #576, #577, #578, #578 #578
Sürüm 3.3.0-alpha01
20 Eylül 2023
- Bu, androidx.paging kitaplıklarının çok platformlu ilk 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
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 kayıtları içerir.
Hata Düzeltmeleri
- Yükleme tamamlandığında
asSnapshot()
hakkında herhangi bir bilgi (PagingData.from(List, LoadStates)
aşırı yüklemenin aksine) yaşanmayacağından,PagingData.from(List)
kullanılarak oluşturulan bir Akış geçirildiğinde Çağrı Testi yapısınınasSnapshot()
API'sinin takılması 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 için (ör.MutableStateFlow
,LoadStates
sağlayanPagingData.from
aşırı yükünü kullanın. (I502c3) - Sayfa Oluşturma Yazma işlevi, yükleme tamamlanırken yeni verilerin aynı çerçevede kullanılabilir olmasını sağlamak için artık dahili olarak
AndroidUiDispatcher.Main
kullanmaktadır. (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'dan sonraki önemli değişiklikler
- Sayfa Oluşturma Yazma, API kararlılığına ulaştı ve Sayfalandırma sürümünün artık diğer tüm Sayfalama yapılarıyla eşleştiği 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 önizlemesine yönelik destek. Bu akışı,collectAsLazyPagingItems()
önizlemesi için alıcı olarak@Preview
composable'a aktarın. LazyVerticalGrid
veHorizontalPager
gibi geç olmayan düzenlerin yanı sıra Wear ve TV kitaplıklarındaki özel geç eklenen bileşenler için destek. Bu,itemKey
veitemContentType
alt düzey yeniLazyPagingItems
uzantı yöntemleriyle elde edildi. Bu yöntemler,key
vecontentType
parametrelerini,LazyColumn
veLazyVerticalGrid
için halihazırda mevcut olan standartitems
API'lerinin yanı sıraHorizontalPager
gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı oluyor.- Yalnızca
LazyListScope
desteği olanitems(lazyPagingItems)
veitemsIndexed(lazyPagingItems)
kullanımdan kaldırıldı.
- Bir
- Uygulamanızın her katmanının birim testi çevresinde tasarlanan API'ler ve ayrı ayrı Sayfalama ile entegrasyonu sağlayan yeni
paging-testing
yapısı. Örneğin,TestPager
sınıfını kullanarak kendi özelPagingSource
uygulamanızın davranışını Çağrı Cihazı ve gerçek kullanıcı arayüzünden bağımsız olarak doğrulayabilirsiniz.- Testlerde bir Çağrı Cihazı'na geçirilebilecek
Flow<List<Value>>
veya statikList<Value>
değeriniPagingSourceFactory
öğesine dönüştürmek için kullanılanasPagingSourceFactory
API'ler Flow<PagingData<Value>>
üzerindeasSnapshot
Kotlin uzantısı,Flow<PagingData<Value>>
doğrudanList<Value>
anlamına gelir.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.
- Sayfalama hata ayıklama bilgilerini iki düzeyde sunmak için varsayılan günlükler eklendi:
VERBOSE
veDEBUG
. Günlükler,adb shell setprop log.tag.Paging [DEBUG|VERBOSE]
komutu kullanılarak etkinleştirilebilir. Bu, hem Görünümlerle sayfa ekleme hem de Oluşturma ile Sayfalama için geçerlidir. PagingDataAdapter
veAsyncPagingDataDiffer
içinCoroutineDispatcher
yerineCoroutineContext
kabul eden kurucular eklendi.- Önceki () ->
PagingSource
lambda'larına göre daha açık bir API yüzeyi sağlayan yeni birPagingSourceFactory
işlevsel arayüzü eklendi. Bu fabrika, bir Çağrı Cihazı örneğini göstermek için kullanılabilir.
Sürüm 3.2.0-rc01
21 Haziran 2023
androidx.paging:paging-*:3.2.0-rc01
yayınlandı. 3.2.0-rc01 sürümü bu kayıtları içerir.
Harici Katkı
- Çağrı özelliğinin Android/JVM özelliklerinden farklılaş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ı. 3.2.0-beta01 sürümü bu kayıtları içerir.
Sayfa Oluşturma
- Sayfa Oluşturma Yazma işlevi, 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 Oluşturma Yazma özelliğinden kaldırıldı. Bu API'lerin yerini alacak API'lere ilişkin örnekler için Çağrı Oluşturma1.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 kayıtları içerir.
Yeni Özellikler
- Mevcut
() -> PagingSource
lambdalardan daha açık bir API yüzeyi sağlayan yeniPagingSourceFactory
işlevsel arayüzü eklendi. Bu fabrika, birPager
örneğini göstermek için kullanılabilir. (I33165, b/280655188) - Yalnızca sabit veri listesinden yüklenen bir
PagingSourceFactory
elde etmek içinList<Value>.asPagingSourceFactory()
yenipaging-testing
API'si eklendi.Flow<List<Value>>
sitesindeki mevcut uzantı, birden fazla nesil statik veriyle test yapmak için kullanılmaya devam etmelidir. (Id34d1, b/280655188)
API Değişiklikleri
- Sayfa testindeki herkese açık tüm API'lerin yalnızca testlerde kullanıldığından emin olmak için artık bu API'lere
@VisibleForTesting
ek açıklaması eklenmiştir. (I7db6e) asSnapshot
API artıkCoroutineScope
geçirilmesini gerektirmiyor. Artık varsayılan olarak üst kapsamından devralınan bağlamı kullanır. (Id0a78, b/282240990)TestPager
kurucu parametreleri, gerçekPager
kurucu parametrelerinin sırasına sezgisel olarak uyacak şekilde yeniden sıralandı (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
çağrı testlerini çalıştırmak için artık ana görev dağıtıcıya gerek yoktur. 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 değerine ayarlar. Bu, ilk yenileme yükünden verileri almak için herhangi bir yükleme işlemini geçirmedenasSnapshot
çağrısına izin verir. (Ied354, b/277233770)
Dokümanlarda İyileştirmeler
- Bunun,
PagingSource
örnekleri oluşturmak için yeniden kullanılabilir bir fabrika döndüren birFlow
üzerinde uzatma yöntemi olduğunu netleştirmek üzereasPagingSourceFactory()
ile ilgili dokümanlar güncellendi. (I5ff4f, I705b5) - Atlamayı desteklemek için
itemsBefore
veitemsAfter
değerlerini geçersiz kılma ihtiyacını netleştirmek üzereLoadResult.Page
kurucusuyla ilgili dokümanlar güncellendi. (Ied354)
Harici Katkılar
- Çağrı özelliğinin Android/JVM özelliklerinden farklılaş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, Çağrı Cihazı'na sağlamak üzere birFlow<List<Value>>
öğesindenpagingSourceFactory
oluşturmak içinasPagingSourceFactory
yöntemi içeriyor. Akıştan yayınlanan herList<Value>>
, Sayfalandırılmış veri neslini temsil eder. Bu, Çağrı Cihazı'nın veri toplaması için bir veri kaynağını taklit ederek örneğinPagingData
dönüşümleriyle ilgili sayfa oluşturma 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>>
ü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ü tekrarlanabilir ve tutarlı bir şekilde 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.// 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, I29b9, I51f4d
API Değişiklikleri
AsyncPagingDataDiffer
vePagingDataAdapter
içindegetItem
vepeek
için yapılan kullanıcı arayüzü çağrıları, artık Ana iş parçacığında yalnızca çağrılabilir olarak doğru şekilde işaretleniyor. (I699b6)TestPager
tarafından kullanılan genel türlerden joker karakterler kaldırıldı. Böylece, bu yöntemlerin sonuçlarının Java programlama dilinde yazılmış kodda kullanılması kolaylaştı. (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ı birim test etme ve ayrı ayrı Sayfalama ile entegrasyonu için tasarlanmış API'ler sağlar.
Örneğin, bu ilk sürüm, kendi özel PagingSource
uygulamanızın davranışını Pager
'dan ve normalde uçtan uca Sayfalama entegrasyonunu simüle etmeniz 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 olarak kabul edilmelidir. Bu, Pager
uygulamasının gerçek uygulamasını yansıtan ve PagingSource
testi için basitleştirilmiş bir API yüzeyi sunan test ikilidir. Bu API'ler suspend
API'leridir ve Android'de Kotlin eşlerini test etme kılavuzunda özetlendiği gibi runTest
içinde ç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ımı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 kayıtları içerir.
Yeni Özellikler
- Sayfalandırma,
PagingData
kaynağından toplanan hata ayıklama bilgilerini ortaya çıkarmak için artıkAsyncPagingDataDiffer
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()
, artık sunucu tarafındakiCombinedLoadStates
uygulamasını etkilemez.LoadStates
ayarının tamamen terminal (ör.sourceLoadStates
remoteLoadStates
NotLoading(endOfPaginationReached = false)
) içerir.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ık doğru şekildeinitialKey
üzerinde önceliklendirilmiş, ancak null olmayan birinitialKey
ayarlanmış. (Ic9542, b/230391606)
Harici Katkı
- :compose:ui:ui-test api (updateApi) test-coroutines-lib geçişi nedeniyle güncellendi (I3366d)
Sürüm 3.1
Sürüm 3.1.1
9 Mart 2022
androidx.paging:paging-*:3.1.1
yayınlandı. 3.1.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
.cachedIn()
tarafından hatalı ş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ı. 3.1.0 sürümü bu kayıtları içerir.
3.0.0'dan bu yana yapılan önemli değişiklikler
Flow<PagingData>.observable
veFlow<PagingData>.flowable
API'leri artık deneysel değilLoadState
ile ilgili davranış değişiklikleri:endOfPaginationReached
,PagingSource
veRemoteMediator
içinLoadType.REFRESH
boyunca her zamanfalse
olur.- Sayfalandırmadan
LoadStates
artık aşağı doğru yayınlamadan önce hemPagingSource
hem deRemoteMediator
değerlerinden geçerli değerleri bekliyor. Yeni nesilPagingData
, yenileme durumu için artık her zaman doğru şekildeLoading
ile başlar. Bazı durumlardaNotLoading
ayarı yanlış bir şekilde ayarlanır. - Sunucu API'lerinde
.loadStateFlow
ve.addLoadStateListener
, artık aracı durumu her zamannull
olarak ayarlanmış ilkCombinedLoadStates
değerini yedekleriyle göndermiyor.
- Eski nesillerde iptal işlemi, artık iptal etme / yeni nesillerde heyecanla gerçekleştiriliyor. Artık
Flow<PagingData>
sitesinde.collectLatest
kullanmanız gerekmeyecek olsa da bunu yapmanız önerilir. PagingSource.LoadResult.Invalid
,PagingSource.load
öğesinden yeni bir döndürme türü olarak eklendi. Bu durum, Sayfalandırmanın buPagingSource
için bekleyen veya gelecekteki tüm yükleme isteklerini silmesine ve 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ş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ğinden bağımsız olarak 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 hiçbir yeni öğe içermese bile bir 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ı. 3.1.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Birden fazla yükleme etkinliğinin, gözlemci yokken aşağı akış tarafından Sayfalama tarafından gönderildiği durumlarda veya bir gözlemcinin yeni bir PagingData'ya geçiş yaparken kullandığı durumlar arasında gerçekleşen 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 değerlendirilmesine ve dolayısıyla sayfa yüklemelerinin duraklamasına neden olabildiği bir sorun düzeltildi. Bu durum özellikle, çok sayıda öğenin tek seferde yerleştirildiği bir sırayla yerleştirildiği ve kullanıcı kaydırma yönüne göre yüklenmeye öncelik verdiği durumlarda özellikle sorun teşkil eder. Bu öğe erişimleri artık arabelleğe alınır ve kaldırılmalarını önlemek için eşzamanlı olarak önceliklendirilir. (aosp/1833273)
Sürüm 3.1.0-alpha04
29 Eylül 2021
androidx.paging:paging-*:3.1.0-alpha04
yayınlandı. 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ğildir. (Ie0bdd)
Hata Düzeltmeleri
- LoadStates söz konusu olduğunda
endOfPaginationReached
, artıkLoadType.REFRESH
için her zamanfalse
olur. Daha önce, endOfPagcationReached için RemoteMediatorREFRESH
değeritrue
iken PagingSource için bu mümkün değildi. Bu davranış artık, YENİLEME işlevinin terminal olması hiçbir anlam ifade etmediğinden her zamanfalse
döndürülecek şekilde birleştirilmiştir ve artık LoadStates'te API sözleşmesi kapsamında belgelenmiştir. 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) Paging'deki LoadState'ler artık nesiller arasında aşağı akış yayınlamadan önce hem PagingSource hem de RemoteMediator'dan geçerli değerleri beklemektedir. Bu, yeni nesil PagingData'nın, önceden Yükleniyor durumundayken MergedLoadStates.source.refresh'da NotLoading göndermelerini önlemektedir. Yeni nesil PagingData, artık bazı durumlarda ilk olarak NotLoading ayarına yanlış şekilde sıfırlamak yerine artık her zaman yenileme için Yükleme ile başlayacaktır.
Eski nesillerde iptal işlemi, artık geçersiz kılma / yeni nesillerde istekli bir şekilde gerçekleşiyor.
Flow<PagingData>
ürününde .collectValid özelliğini kullanmak artık kesinlikle gerekli olmamasına rağmen bunu kullanmanız önemle tavsiye edilir. (I0b2b5, b/177351336, b/195028524)Sunucu API'lerinde
.loadStateFlow
ve.addLoadStateListener
artık yedekli olarak aracı durumları her zamannull
, kaynak durumları iseNotLoading(endOfPaginationReached = false)
olarak ayarlanmış başlangıçCombinedLoadStates
göndermez. Bu gelişme şu anlama geliyor:- RemoteMediator kullanırsanız aracı durumları her zaman doldurulur.
.loadStateFlow
üzerinde yeni bir loadState işleyicisi veya yeni bir toplayıcı kaydetmek,PagingData
'dan gerçek birCombinedLoadStates
almadığı takdirde artık geçerli değeri hemen yayınlamaz. Bu durum,PagingData
gönderilmeden önce bir toplayıcı veya dinleyici 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 kayıtları içerir.
API Değişiklikleri
PagingSource'a üçüncü bir LoadResult döndürme türü LoadResult.Geçersiz'dir. PagingSource.load, LoadResult.Override değerini döndürürse sayfalama, yüklenen verileri siler ve PagingSource'u geçersiz kılar. Bu döndürme türü, veritabanından veya ağdan döndürülebilecek potansiyel olarak geçersiz ya da eski verileri işlemek için tasarlanmıştır.
Örneğin, temel veritabanının yazılıyor olması ancak PagingSource zaman içinde geçersiz kılmazsa ve uygulamanın yüklendiği destek veri kümesinin değişmezliğine bağlı olması halinde (ör. LIMIT OFFSET stili db uygulamaları). Bu senaryoda, yüklemeden sonra geçersiz kılmanın kontrol edilmesi ve LoadResult.Override'ın döndürülmesi önerilir. Bu durum, Sayfalamanın bu PagingSource'a yönelik bekleyen veya gelecekteki tüm yükleme isteklerini iptal edip geçersiz kılmasına neden olur.
Bu döndürme türü, LivePagedList veya RxPagedList'ten yararlanan Paging2 API tarafından da desteklenir. Paging2'nin PagedList API'leriyle bir PagingSource kullanılırken PagedList hemen ayrılır, böylece bu PagedList'e veri yüklemek için yapılacak sonraki girişimler durdurulur ve PagingSource'ta geçersiz kılma işlemi tetiklenir.
LoadResult kapalı bir sınıftır. Yani bu, doğrudan PagingSource.load sonuçlarının kullanıldığı kullanım alanlarının derleme zamanında LoadResult.Override'ı işlemesi gerekeceğinden kaynakla uyumsuz bir değişikliktir. Örneğin, döndürme türünü kontrol etmek için tam-zamandan yararlanılan Kotlin kullanıcılarının, Geçersiz tür için bir kontrol eklemeleri gerekir. (Id6bd3, b/191806126, b/192013267)
Hata Düzeltmeleri
- PagingSource.registerOverrideatedCallback veya DataSource.addInvalidatedCallback aracılığıyla eklenen geçersiz kılma geri çağırmaları, artık geçersiz olan bir PagingSource / DataSource'ta kayıtlıysa otomatik olarak tetiklenir. Bu işlem, Sayfalama'nın geçersiz kılma sinyallerini bırakmasına ve ilk yükleme sırasında zaten geçersiz olan bir Kaynak sağlandığında takılmasına neden olan bir yarış durumunu çözer. Ayrıca, geçersiz kılma işlemleri artık en fazla bir kez çağrıldıkları için tetiklendikten sonra düzgün bir şekilde kaldırılıyor. (I27e69)
- Yeni oluşturulan bir PagedList akışından yer tutucu başlangıç değerini (InitialPagedList) gönderme, ör. LivePagedListBuilder veya RxPagedListBuilder, artık önceden yüklenmiş verileri temizlemeyecektir.
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 kayıtları içerir.
Yeni Özellikler
Sunulan sayfalar kullanıcı arayüzünde güncellendikten hemen sonra tetiklenen onPagesPresentationed işleyici 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 adaptör yöntemlerini çağırabilirsiniz. Her güncellemede yapılması pahalı olabileceğinden .snapshot() işleminin açık bir şekilde çağrılmaya bırakıldığını unutmayın.
Sayfa güncellemeleri aşağıdaki senaryolarda gerçekleşebilir:
- Yeni neslin sunulan öğelerde herhangi bir değişiklik içerip içermediğine bakılmaksızın, yeni nesil PagingData'nın ilk yükü tamamlanır. Liste birebir aynı olduğu için ilk yükü güncelleme olmadan tamamlayan yeni nesil, bu geri çağırmayı yine de tetikler.
- Eklenen sayfa hiçbir 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 IllegalStateException (I96707) hatası verilmesine neden olmaz.
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 kapsamında
Hata Düzeltmeleri
- Sayfalandırmanın bazen RecyclerView'a farklı etkinlikler göndermesine ve bunun sonucunda belirli işleyicilerin erken tetiklenmesine neden olması sorunu giderildi. (Ic507f, b/182510751)
Harici Katkı
- Kullanımdan kaldırılan PagedList compat API'leri rxjava3 yapısına eklendi (Id1ce2, b/182497591)
Sayfa 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ı. Sürüm 1.0.0-alpha20 bu kayıtları içerir.
Yeni Özellikler
- Sayfa Oluşturma Yazma işlevi artık
PagingData.from(fakeData)
oluşturupPagingData
öğesiniMutableStateFlow
içinde (ör.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
). Bu veriler@Preview
için girdi olarak kullanıldığındacollectAsLazyPagingItems()
çağrıları önizlenebilirLazyPagingItems
sağlar. (I8a78d, b/194544557)
Hata Düzeltmeleri
LazyPagingItems
bölgesinde toplanmış, önbelleğe alınmışpager.flow.cachedIn
verileri artık durum geri yüklendikten sonra eşzamansız toplama yapılmasına gerek olmadan kullanılabilir. Bu, durum geri yüklendikten sonra önbelleğe alınan verilerin, ilk oluşumun oluşturulmasından hemen sonra sunum 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 Oluşturma Yazma uygulaması LazyListScope
ürününde özel items
ve itemsIndexed
uzantıları sağlıyordu. Bu da, Çağrı Yazma özelliğini LazyVerticalGrid
, HorizontalPager
gibi diğer geç yazım düzenleriyle veya Wear ve TV kitaplıkları tarafından sağlanan diğer özel geçsiz bileşenlerle kullanamayabileceğiniz anlamına geliyordu. Bu esnek olmama sorununun ele alınması, bu sürümle ilgili birincil güncellemedir.
Daha geç düzenleri desteklemek amacıyla API'leri farklı bir katmanda oluşturmamız gerekiyordu. Her geç düzen için özel bir items
API'si sağlamak yerine Sayfa Oluşturma Yazma, itemKey
ve itemContentType
'teki LazyPagingItems
üzerinde 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 HorizontalPager
gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olmaya odaklanır. (Ifa13b, Ib04f0, b/259385813)
Yani bir LazyVerticalGrid
desteği şu şekilde görünür:
// This part is unchanged
val lazyPagingItems = pager.collectAsLazyPagingItems()
LazyVerticalGrid(columns = GridCells.Fixed(2)) {
// Here we use the standard items API
items(
count = lazyPagingItems.itemCount,
// Here we use the new itemKey extension on LazyPagingItems to
// handle placeholders automatically, ensuring you only need to provide
// keys for real items
key = lazyPagingItems.itemKey { it.uniqueId },
// Similarly, itemContentType lets you set a custom content type for each item
contentType = lazyPagingItems.itemContentType { "contentType" }
) { index ->
// As the standard items call provides only the index, we get the item
// directly from our lazyPagingItems
val item = lazyPagingItems[index]
PagingItem(item = item)
}
}
Bu yeni API'lerin kullanımına ilişkin daha fazla örnek için lütfen örneklerimize bakın.
Bu değişiklikler LazyColumn
ve LazyRow
örneklerini birkaç satır uzatıyor olsa da, tüm geç düzenlerdeki tutarlılığın bundan sonra Sayfa Oluşturma Yazma özelliğini kullananlar için önemli bir faktör olduğunu düşündük. Bu nedenle, LazyListScope
için olan mevcut 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
ürünündekiitems
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 Oluşturma, bağımlılığını Compose 1.0.5'ten Compose 1.2.1'e güncelledi (Ib1918, b/255283378)
Sürüm 1.0.0-alpha18
8 Şubat 2023
androidx.paging:paging-compose:1.0.0-alpha18
, 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
çağrılırken özelCoroutineContext
desteği ekleyin. (I7a574, b/243182795, b/233783862)
Sürüm 1.0.0-alfa16
10 Ağustos 2022
androidx.paging:paging-compose:1.0.0-alpha16
yayınlandı. 1.0.0-alpha16 sürümü bu kayıtları içerir.
Yeni Özellikler
- Sayfalandırma, artık PagingData'dan toplanan hata ayıklama bilgilerini göstermek için
LazyPagingItems
sınıfı aracılığıyla günlükler sağlıyor. - 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 sürümlerle kullanıldığında eksikPagingDataDiffer
oluşturucu hatası düzeltildi.(b/235256201,b/239868768)
Sürüm 1.0.0-alfa15
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
, şimdi başlangıçtakiloadState
öğ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ı. Sürüm 1.0.0-alpha14 bu kayıtları içerir.
Sürüm 1.0.0-alfa13
29 Eylül 2021
androidx.paging:paging-compose:1.0.0-alpha13
yayınlandı. Sürüm 1.0.0-alpha13 bu kayıtları içerir.
API Değişiklikleri
LazyPagingItems.snapshot()
işlevi,LazyPagingItems.itemSnapshotList
özelliğiyle değiştirildi (Ie2da8)- Desteği sonlandırılan
LazyPagingItems.getAsState()
kaldırıldı (Ie65e4)
Sürüm 1.0.0-alpha12
21 Temmuz 2021
androidx.paging:paging-compose:1.0.0-alpha12
yayınlandı. 1.0.0-alpha12 sürümü bu kayıtları içerir.
API Değişiklikleri
- Sayfalandı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 bilgiyi burada bulabilirsiniz. (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-alfa10
2 Haziran 2021
androidx.paging:paging-compose:1.0.0-alpha10
yayınlandı. Sürüm 1.0.0-alpha10 bu kayıtları içerir.
Sürüm 1.0.0-alpha09
18 Mayıs 2021
androidx.paging:paging-compose:1.0.0-alpha09
yayınlandı. Sürüm 1.0.0-alpha09 bu kayıtları içerir.
Hata Düzeltmeleri
- LazyPagingItems'in itemCount ve item alıcı artık gözlemlenebilir durumdadır ve LazyVerticalGrid ile de kullanılmasına olanak tanır (Ie2446, b/171872064, b/168285687)
Oluşturma uyumluluğu
androidx.paging:paging-compose:1.0.0-alpha09
yalnızca Oluştur1.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 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 kayıtları içerir.
Hata Düzeltmeleri
Compose 1.0.0-alpha11'e 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'a 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ı. Sürüm 1.0.0-alpha04 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 arabulucu hem de kaynak yük durumuNotLoading
olduktan sonraLoading
ürünündenNotLoading
'e geçiş yapılacak ş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ı. 1.0.0-alpha03 sürümü bu kayıtları içerir.
- Compose 1.0.0-alpha08'le 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
öğelerine eklendi
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 kayıtları içerir.
Yeni Özellikler
paging-compose
yapısı, The 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
öğesineLivePagedList
veyaRxPagedList
tarafından oluşturulan ilk değerden erişmek artık yanlış bir IllegalStateException (I96707) hatasına neden olmaz.
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 çoğunluğu kullanımdan kaldırılmış ve yerini yeni Paging 3 API'lerine bırakarak aşağıdaki iyileştirmeler yapı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 ve yenile 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 olmak üzere özel sayfa dönüşümleri
- Durumu üst ve alt bilgileri yükleniyor
Sürüm 3.0.0-rc01
21 Nisan 2021
androidx.paging:paging-*:3.0.0-rc01
yayınlandı. 3.0.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Sayfalandırmanın bazen RecyclerView'a farklı etkinlikler göndermesine ve bunun sonucunda belirli işleyicilerin erken tetiklenmesine neden olması sorunu giderildi. (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 koşulu. Bunlar daha önce@get
yönteminde işaretlenmişti. Bu yöntem, Kotlin Derleyici tarafından şu nedenle yoksayılıyor: 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
koşulunu yerine getirmek için Sayfalamanın tekrar getirilmesini engelleyerek Sayfalamanın "takılıp 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ğlı oldukları deneysel ek açıklamayı gösterir. paging-rxjava2 veya paging-rxjava3'te Rx sıkıştırma sarmalayıcılarını 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ılan
DataSource
öğesinin ilk kullanıma hazırlanması sırasında yapılanisInvalid
çağrısı, artık ana iş parçacığı yerine fetchDispatcher'da doğru şekilde başlatılıyor. Bu işlem, OdanınPagingSource
uygulaması kullanılırken ana ileti dizisindeki Db erişimine bağlıIllegalStateException
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 uygulaması olmayan soyut bir işlevdir. Kullanıcılar taşıma işlemi, varsayılan uygulamayı döndürmeye devam edebilir. Bu da yalnızcanull
değerini döndürü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, mümkünse SayfalamanınPagingState.anchorPosition
aracılığıyla görüntü alanının çevresinde 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. Şu iki seçenek sunulur:
FULLY_COMPLETE
- mevcut davranış. Terminal ayırıcıları eklemeden önce hem PagingSource hem de RemoteMediator'ın endOfPaginationReached'i işaretlemesini bekleyin. RemoteMediator kullanılmazsa uzak loadState yoksayılır. Bu, özellikle bölüm ayırıcılarını, uzak kaynaktan getirme (ör. ağ) dahil olmak üzere 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'unendOfPaginationReached'i işaretlemesini bekleyin. Bu, üst bilgilerin ve alt bilgilerin ilk yükle eşzamanlı olarak sunulmasına olanak tanır. Böylece, kullanıcıların terminal ayırıcılarını görmek için ekranı kaydırması gerekmez. (Ibe993, b/174700218)
Hata Düzeltmeleri
- Bir PagingSource geçersiz kılındığında PageFetcher'dan sayfa yüklemeye bile başlayabilmek için PagingSource'un geçersiz kılındığı nadir görülen bir bellek sızıntısı düzeltildi. (I9606b, b/174625633)
Sürüm 3.0.0-alpha12
13 Ocak 2021
androidx.paging:paging-*:3.0.0-alpha12
yayınlandı. Sürüm 3.0.0-alpha12 bu kayıtları içerir.
API Değişiklikleri
- InvalidatingPagingSourceFactory, hiçbir zaman soyut yöntemler içermediğinden 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 .cachedIn() aşırı yüklemesi eklendi. (I97d81, b/175332619)
- Java arayanları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 -Sync dönüşüm operatörlerinin -Senkronizasyon son eki kaldırılmıştır ve Kotlin Coroutine kullanıcılarının bunun yerine askıya alma bloğunu kabul eden uzantı işlevini çağırarak konuyu netleştirmesi gerekir.
Tüm PagingData dönüştürme operatörleri, statik PagingDataTransforms sınıfının altındaki uzantılara taşındı. Java kullanıcılarının bunları statik
yardımlar aracılığıyla çağırmaları gerekir. Örneğin,
PagingDataTransforms.map(pagingData, transform)
Kotlin kullanıcıları için söz dizimi aynıdır ancak işlevi içe aktarmanız gerekir. (If6885, b/172895919)
Hata Düzeltmeleri
- Sayfalara ayırmanın sonuna zaten ulaşıldıysa
adapter.refresh()
sırasındaRemoteMediator.load()
öğesinin çağrılmamasına neden olan hata düzeltildi.
Sürüm 3.0.0-alpha11
16 Aralık 2020
androidx.paging:paging-*:3.0.0-alpha11
yayınlandı. Sürüm 3.0.0-alpha11 bu kayıtları içerir.
Yeni Özellikler
- Aşağıdaki temel kullanım alanları için kayıtlı durum desteği eklendi (özellikle katmanlı kaynak konusunda tam destek çalışması 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)
- sayfalandırma kaynağı sayılır, yer tutucular etkinleştirilir ve düzen kademeli olarak uygulanmaz.
API Değişiklikleri
PagingSource.getRefreshKey()
artık kararlı API (I22f6f, b/173530980)PagingSource.invalidate
artık açık bir işlev değil. Geçersiz kılma işlemi söz konusu olduğunda bildirim almanız gerekiyorsa geçersiz kılmayı geçersiz kılmak yerineregisterInvalidatedCallback yöntemini kullanmayı düşünün. (I628d9, b/173029013, b/137971356)- Pager artık normal kurucularının yanı sıra tek bir deneysel oluşturucuya sahiptir. Bunun yerine, deneysel API'ları deneysel olmayan herkese açık API'ye etkinleştirme ek açıklaması üzerinden sızdırırlar. (I9dc61, b/174531520)
- Uzaktan güncellemenin uygulandığından emin olmak için
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
kolaylık özellikleri yalnızca hem arabulucu hem de kaynak yük durumuNotLoading
olduktan sonraLoading
ürünündenNotLoading
'e geçiş yapılacak şekilde güncellendi. (I65619) LoadParams.pageSize kaldırıldı (önceden kullanımdan kaldırıldı). PagingSource'unuzda
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 bir Pager veya PagedList kullanmadan test ediyorsanız ve
initialLoadSize
ayarını 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'ı 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 oluşan kilitlenme düzeltildi. (I0ed33, b/174787528)
- RemoteMediator ayarlanmışsa PREPEND / UYGULAMA END işlevi için yükleme durumunun, ilk yüklemeden hemen sonra
NotLoading(endOfPaginationReached = true)
olarak güncellenmemesi hatası düzeltildi (I8cf5a) - Sunucu tarafı API'lerin .snapshot(), .peek() vb. gibi ListUpdateCallback güncellemelerinde önceki (eski) listeyi döndürmesine neden olan hata düzeltildi.
- RemoteMediator ile birlikte kullanıldığında Ayırıcı operatörlerinin üstbilgi veya altbilgi eklememesine neden olan hata düzeltildi
- RemoteMediator için NotLoading'deki LoadState güncellemelerinin Yükleme durumunda takılmasına neden olan hata düzeltildi
- Paging2.0 uyumluluk API'sinin (
.asPagingSourceFactory()
) destekleyenDataSource
biriminin yanlış CoroutineDispatcher'da 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 vakaları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 kayıtları içerir.
API Değişiklikleri
Kullanımdan kaldırılan
dataRefreshFlow
vedataRefreshListener
API'leri, loadStateFlow / Dinleyici güncellemeleriyle gereksiz olduklarından kaldırılmıştır. Taşıma işlemindekiler için loadStateFlow'un eşdeğeri şudur:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
Hata Düzeltmeleri
REFRESH
RemoteMediator için endOfPaginationReached, artık LoadState güncellemelerine doğru şekilde yayılır ve uzakAPPEND
ilePREPEND
öğelerinin tetiklenmesini engeller. (I94a3f, b/155290248)- Boş başlangıç sayfası veya yoğun filtreleme nedeniyle boş bir liste sunmak artık Sayfalamanın
PREPEND
veyaAPPEND
yüklemesini başlatmasını engellemez. (I3e702, b/168169730) - Geçersiz kılmalar hızlı bir şekilde gerçekleştiğinde,
getRefreshKey
öğesinin sonraki PagingSource nesillerinde çağrılmamasına neden olan sorun düzeltildi. (I45460, b/170027530)
Harici Katkı
- Geçersiz kılmayı yaydığı tüm PagingSource'lara yönlendiren bir
.invalidate()
API'si 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.load()
, b/173717820 değerini döndürmeden önce geçersiz kılma vePagingSource.load(LoadParams.Refresh(...))
tamamlanırsa RemoteMediator'ı kullanmak, uzakLoadState
öğesinin 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 kayıtları içerir.
API Değişiklikleri
- BirreplaceWith ifadesiyle dataYenileFlow / İşleyici yöntemlerini tamamen kullanımdan kaldırın. (I6e2dd)
Hata Düzeltmeleri
- RemoteMediator ile ayırıcılar kullanıldığında
IllegalArgumentException
hata oluşması ve bir geçersiz kılmanın tetiklenmesi sorununun, endOfPagination döndürecek bir uzak yükleme çalışırken yapılmasıyla ilgili düzeltme (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 kayıtları 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üşümleri etkinleştirilerek birleştirildi (Kotlin 1.4'te kullanılabilir). Bu ayrıca, geçersiz geri çağırma işlevinin kotlin varyantının,.map
veya.mapByPage
tarafından dönüştürüldükten sonra çağrılmadığı hatayı düzeltir. (I1f244, b/165313046)
Hata Düzeltmeleri
- Paging'in ViewPager ile etkileşimi önemli ölçüde iyileştirildi. Özel olarak belirtmek gerekirse, Sayfalandırma, bir sayfanın geçersiz kılınması nedeniyle artık
RemoteMediator#load
aramasını iptal etmeyecektir. Ayrıca, YENİLEME isteği başarıyla tamamlanana kadar YENİLEME gerekliyse yükleme ekleme/başa ekleme isteği göndermez. (I6390b, b/162252536) - EksikGetterMatchingBuilder için API lint kontrolü, Androidx için etkinleştirildi (I4bbea, b/138602561)
.withLoadState*
ConcatAdapter
yardımcılarının, arka plan iş parçacığından RecyclerView'un bildirilmesi nedeniyle kilitlenmesine neden olan hata düzeltildi (I18bb5, b/170988309)- Ç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 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ış koşulu nedeniyle RemoteMediator'da atılan IndexOutOfBounds istisnası düzeltildi. (I00b7f, b/165821814)
- DataSource -> PagingSource dönüşümünde, PagingSource'un DataSource'tan gelen geçersiz kılma sinyallerini yok saymasına neden olabilecek bir yarış durumu düzeltildi.
- Sayfa getirme mantığındaki, PagingDataAdapter.refresh() çağrılana kadar bazen yeni nesil PagingSource'u alamamasına neden olan bir sorun düzeltildi.
- RemoteMediator ile birlikte PagingSource'a dönüştürülmüş bir DataSource (Oda tarafından oluşturulan kaynak gibi) kullanıldığında kaydırma konumunun kaybolmasına neden olan bir sorun düzeltildi.
Harici Katkı
- PagingData'ya 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 kayıtları içerir.
API Değişiklikleri
- Kararlı kimlikler için desteklenmemeyle ilgili daha net mesajlar içeren
UnsupportedOperationException
artıkPagingDataAdapter.setHasStableIds
çağrıldığında gönderilmiyor. (Ib3890, b/158801427)
Hata Düzeltmeleri
- insertSeparators artık boş sayfaları filtrelemez, böylece birçok boş sayfa eklenmiş olsa bile sunucu önceden getirme mesafesine uyar. (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 artık, sunulan veriler yoğun bir şekilde filtrelenmiş olsa bile sayfaları doğru bir şekilde önceden getiriyor
LoadResult.Error
öğesinin yeniden denenen bir yüklemeye döndürülmesi, artık öğe erişimlerinin yeniden denemeyi hatalı şekilde yeniden tetiklemesine neden olmuyor
Harici Katkı
- Bazı testleri temizlemeye yardımcı olduğu için Clara F'ye teşekkür ederiz! (549612)
Sürüm 3.0.0-alpha04
5 Ağustos 2020
androidx.paging:paging-*:3.0.0-alpha04
yayınlandı. Sürüm 3.0.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
- Tetikleyici sayfa yüklemeleri olmadan sunulan verilere erişim izni vermek için
AsyncPagingDataDiffer
vePagingDataAdapter
uygulamalarınapeek()
API eklendi. (I38898, b/159104197) - Sayfa getirme işlemini tetiklemeden sunulan öğelerin alınmasına izin vermek için
PagingDataAdapter
veAsyncPagingDataDiffer
öğelerinesnapshot()
API'si eklendi. (I566b6, b/159104197) - Statik listelerin sunulmasına izin vermek için bir
PagingData.from(List<T>)
oluşturucusu eklendi.Bu, belirli durumlarda (ör. ilk YENİLEME işlemi tamamlanmadan önce veya sadece dönüşümleri test etmek için) statik listeleri göstermek için genel PagingData akışıyla birleştirilebilir. (Id134d) - REFRESH'de sunulan öğelerin durumunu ortaya çıkarmayı amaçladıkları için dataYenile Flow / İşleyici API'lerini kullanımdan kaldırın, ancak loadState Akış / İş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 (I4d702, b/160192222) yol açtığı bir hata düzeltildi
Harici Katkı
- Slack adına RxJava3 uyumluluk sarmalayıcıları 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ı. 3.0.0-alpha03 sürümü bu kayıtları içerir.
API Değişiklikleri
- PagingState kurucusu artık herkese açık olduğundan getYenileKey() işlevinin test uygulamalarını daha kolay hale getirecektir (I8bf15)
- Orijinal ve kotlin varyantları arasındaki belirsizliği gidermek için DataSource kotlin harita işlevi varyantları Java'dan 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'in itemBefore ve itemsAfter öğelerini varsayılan olarak COUNT_UNDEFINED değerine çıkaran oluşturucusu için aşırı yüklemeler eklendi (I47849)
- Mevcut PagingData operatörlerinin askıya alma yöntemlerini kabul etmesi sağlandı ve Java kullanıcıları için yeni MapSync, düzMapSync ve filterSync askıya alma olmayan operatörleri kullanıma sunuldu. 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) PagingSources artık ilk sayfanın parçası olarak baştaki bir ayırıcıyı gösterir. Böylece, kullanıcının bunu görmek için sayfayı kaydırmasına gerek kalmaz. (I6f747, b/160257628)
- Yer tutuculara öğe erişimi 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 yüklemelerini doğru bir şekilde tetiklemektedir.
- PagingSource'un hata döndürmesinden sonra kaydırmanın bazen PagingDataAdapter.retry() işlevinin yeniden denemesini engellediği hata için düzeltme. (I1084f, b/160194384)
- Bir sayfayı bıraktıktan sonra öğenin, öğe erişimi prefetchUzaklığı (Ie95ae, b/160038730) içinde olmasına rağmen sayfa yüklememesine ilişkin sorunu giderir.
- PagingConfig.maxSize ayarlamak, bir bırakma 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ı. 3.0.0-alpha02 sürümü bu kayıtları içerir.
API Değişiklikleri
PagingConfig
oluşturucusu için ortak varsayılan değerlerle (I39c50, b/158576040) aşırı yüklemeler eklendiPagingDataAdapter
veAsyncPagingDataDiffer
oluşturucuları için ortak varsayılan değerlere (Ie91f5) sahip aşırı yüklemeler eklendi- Adaptör API'leri,
dataRefreshFlow
vedataRefreshListener
artık birPagingData
öğesinin boş olup olmadığını belirtmek için bir Boole geçiriyor (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 PagingSource'ları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
öğesinin askıya alınma olmayan sürümü,submitData
öğesinin askıya alınan sürümünden sonra çağrıldığında birden fazlaPagingData
üzerinde eşzamanlı veri toplama nedeniyle artık kilitlenmeye neden olmamaktadır. (I26358, b/158048877)- Yapılandırma değişikliğinden sonra ortaya çıkabilecek "çağrı cihazından iki kez toplanamıyor" istisnası düzeltildi (I58bcc, b/158784811)
Sürüm 3.0.0-alpha01
10 Haziran 2020
androidx.paging:paging-*:3.0.0-alpha01
yayınlandı. Sürüm 3.0.0-alpha01 bu kayıtları içerir.
Sayfalandırma Kitaplığı, bazı önemli yeni özellikleri 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.
- 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şlevselliği de 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 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 sürümüne karşı bu kayıtları içerir.
Hata Düzeltmeleri
- Geçersiz kılma sırasında bir konum dönüştürülürken nadiren de olsa
IndexOutOfBoundsException
için düzeltme.
Sürüm sorunu
Yanlış yapılandırılmış bir dalda,
2.1.1
sayfalama sürümü yanlışlıkla yayınlanmış. Bu durum, kısmen uygulanmış API'leri ve işlevleri gelecekteki bir sürümde ortaya çıkarmıştır.2.1.2
sayfası, ilk olarak 2.1.1'de kullanıma sunulan yük ortalama düzeltmesini içerir. Ancak, bu kez 2.1.0 sürümünden sonra doğru ş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 kayıtları içerir.
Hata düzeltmeleri
- PositionalDataSource'lardan gelen bitişik ilk yüklemeler, artık yer tutucular devre dışı bırakıldığında 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 yapılmadan 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 yapılmadan 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 yapılmadan yayınlandı.
Sürüm 2.1.0-alpha01
12 Ekim 2018
2.1.0-alpha01
sayfalandırmasına iki önemli ekleme yapıldı: sayfa bırakma ve her yapı için KTX uzantı kitaplıklarının yanı sıra başka birçok API değişikliği ve hata düzeltmesi.
API Değişiklikleri
- Bellekteki yüklenen öğe sayısını sınırlandırdığı 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- Sayfa Listesi değiştirildiğinde dinlemek için
AsyncPagedListDiffer.addPagedListListener()
eklendi. b/111698609 - Eski ve yeni listeyi geçen
PagedListAdapter.onCurrentListChanged()
varyant eklendi, önceki varyant kullanımdan kaldırıldı. - Sayfalı liste görüntülenirse/gösterildiğinde, farktan sonra tetiklenen ek bir geri çağırma alan
PagedListAdapter/AsyncPagedListDiffer.submitList()
varyantları eklendi. Bu sayede PagedList değişimi, diğer kullanıcı arayüzü güncellemeleriyle senkronize edilir. 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
- b/111591017 olarak yeniden kullanılan listelerde farklılıklara yol açan yarış durumu düzeltildi
- Dizin geçersiz olduğunda
PagedList.loadAround()
artıkIndexOutOfBoundsException
hatası verir. Önceden, belirsiz başka bir istisnayla kilitleniyordu. - Değişmeyen verilerle birlikte son derece küçük bir başlangıç yükleme boyutunun 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 b/114635383 yer tutucuları 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
- Baştaki bazı durumlarda kaybolan içerik düzeltildi (yer tutucular devre dışı bırakıldı, PositionalDataSource) b/80149146
- (
1.0.1
sürümünde zaten yayınlandı)PagedListAdapter
veAsyncPagedListDiffer
öğelerinin taşıma etkinliklerine sinyal gönderemediği 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
ürününde tek bir hata düzeltmesiyle yayınlandı. Kararlılık için 1.0.1
kullanmanızı önemle tavsiye ederiz. RxJava2 1.0.1
sayfalandırması da yayınlandı 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
sayfası, ilk alfa sürümünden herhangi bir değişiklik olmadan adayı kullanıma sunacak.
Sürüm 1.0.0
Sürüm 1.0.0-rc1
19 Nisan 2018 Yayın Adayı
1.0.0
Çağrısı için planlanmış başka bir bilinen 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ümde herhangi bir değişiklik yok, 1.0.0-beta1
sürümüyle aynı.
Sürüm 1.0.0-beta1
5 Nisan 2018
Sayfalandırma, adayı serbest bırakmadan ö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 herhangi bir API değişikliği için çıta çok yüksek.
Sayfalandırma 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ı olarak sürümlenecektir.
Bu yeni kitaplık, LivePagedListBuilder
yerine bir RxJava2 alternatifi sağlar. Bu alternatif, Executor
yerine Scheduler
ile 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
Oluşturucularda yürütücülerin 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 olarak ayarlanması düzeltildi.
Hata Düzeltmeleri
LivePagedListBuilder
, ilkPagedList
yüklemesini 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ışı (DataSource.map
ve yer tutucunun devre dışı bırakılmışPositionalDataSource
yüklemesi için kullanılır) b/77237534 düzeltildi
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 sürümü, 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
numaralı sayfanın, Sayfalama isabetleri beta sürümünden önce son sürüm olması planlanmaktadır.
API Değişiklikleri
DataSource.LoadParams
nesnelerin artık ortak kurucusu var veDataSource.LoadCallback
nesne artık soyut. Bu, birDataSource
öğesinin sarmalanmasını veya örnek geri çağırma kullanılarakDataSource
öğesini doğrudan test etmeyi sağlar. b/72600421- DataSource ve DataSource.Factory haritacıları
map(Function<IN,OUT>)
, birDataSource
tarafından yüklenen sonuçları dönüştürmenize, kaydırmanıza veya süslemenize olanak tanır.mapByPage(<List<IN>,List<OUT>>)
, toplu işlem için aynısını sağlar (örneğin, 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 geri kalanları da dahil olmak üzere, kullanımdan kaldırılan tüm sınıflar API'den kaldırıldı.- Harita işlevselliğinin etkinleştirilmesi için
DataSource.Factory
, arayüzden soyut bir sınıfa dönüştürüldü.
Hata Düzeltmeleri
- Yapılar nihai olarak değiştirildi. b/70848565
- Oda
DataSource
uygulaması, çoklu tablo sorgularını işlemek için artık düzeltildi. Bu düzeltme Oda 1.1.0-beta1 içindedir (yukarıya bakın). - Yer tutucular etkinleştirilmişse 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üzeltme) için ek günlük kaydı
- Javadoc örnek kodu düzeltmeleri: b/70411933, b/71467637