Sayfalama

Sayfalandırma Kitaplığı, uygulamanızın RecyclerView öğesi içinde verileri kademeli ve sorunsuz şekilde yüklemenizi kolaylaştırır.

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
Bu kitaplık en son 20 Mart 2024'te güncellendi.

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.

Yeni sayı oluşturma

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 veya paging-runtime AsyncPagingDataDiffer API'lerini gerektirmek yerine PagingDataPresenter temel alınarak oluşturulabilir. (Id1f74, b/315214786)
  • LoadStates öğesinin Hatalı mı yoksa NotLoading durumunda mı olduğunu kontrol etmek için yeni LoadStates ve CombinedLoadStates yardımcı yöntemleri eklendi. Ayrıca, bir yük NotLoading veya Hata durumuna geçene kadar LoadStateFlow üzerinde beklemeyi bekleyen yeni bir API eklendi. (Id6c67)

Davranış değişikliği

  • PagingData.empty(), oluşturucusuna özel LoadStates iletilmediği sürece artık NotLoading durumunu varsayılan olarak gönderir. Bu, bir PagingDataAdapter'a gönderildiğinde LoadStates'yi göndermediği veya LazyPagingItems 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'lerini common uygulamasına taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.
  • paging-testing, kodunu common birimine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.
  • paging-compose, kodunu common adresine taşıdı ve androidx.compose'ın çoklu platform desteğiyle eşleşen bir Android yapısı gönderiyor.
  • paging-runtime, paging-guava, paging-rxjava2 ve paging-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ı

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çin 3.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ın asSnapshot() 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ğlayan PagingData.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şturup PagingData öğesini bir MutableStateFlow (ö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 ve HorizontalPager gibi geç olmayan düzenlerin yanı sıra Wear ve TV kitaplıklarındaki özel geç eklenen bileşenler için destek. Bu, itemKey ve itemContentType alt düzey yeni LazyPagingItems uzantı yöntemleriyle elde edildi. Bu yöntemler, key ve contentType parametrelerini, LazyColumn ve LazyVerticalGrid için halihazırda mevcut olan standart items API'lerinin yanı sıra HorizontalPager gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı oluyor.
    • Yalnızca LazyListScope desteği olan items(lazyPagingItems) ve itemsIndexed(lazyPagingItems) kullanımdan kaldırıldı.
  • 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 özel PagingSource 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 statik List<Value> değerini PagingSourceFactory öğesine dönüştürmek için kullanılan asPagingSourceFactory API'ler
    • Flow<PagingData<Value>> üzerinde asSnapshot Kotlin uzantısı, Flow<PagingData<Value>> doğrudan List<Value> anlamına gelir. asSnapshot lambda, scrollTo veya appendScrollWhile gibi API'ler aracılığıyla uygulamanızın kullanıcı arayüzünü taklit etmenize olanak tanır. Böylece, 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 ve DEBUG. 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 ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden kurucular eklendi.
  • Önceki () -> PagingSource lambda'larına göre daha açık bir API yüzeyi sağlayan yeni bir PagingSourceFactory 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

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 yeni PagingSourceFactory işlevsel arayüzü eklendi. Bu fabrika, bir Pager örneğini göstermek için kullanılabilir. (I33165, b/280655188)
  • Yalnızca sabit veri listesinden yüklenen bir PagingSourceFactory elde etmek için List<Value>.asPagingSourceFactory() yeni paging-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ık CoroutineScope geçirilmesini gerektirmiyor. Artık varsayılan olarak üst kapsamından devralınan bağlamı kullanır. (Id0a78, b/282240990)
  • TestPager kurucu parametreleri, gerçek Pager 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ık loadOperations 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çirmeden asSnapshot ç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 bir Flow üzerinde uzatma yöntemi olduğunu netleştirmek üzere asPagingSourceFactory() ile ilgili dokümanlar güncellendi. (I5ff4f, I705b5)
  • Atlamayı desteklemek için itemsBefore ve itemsAfter değerlerini geçersiz kılma ihtiyacını netleştirmek üzere LoadResult.Page kurucusuyla ilgili dokümanlar güncellendi. (Ied354)

Harici Katkılar

Sürüm 3.2.0-alpha04

8 Şubat 2023

androidx.paging:paging-*:3.2.0-alpha04 yayınlandı. 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 bir Flow<List<Value>> öğesinden pagingSourceFactory oluşturmak için asPagingSourceFactory yöntemi içeriyor. Akıştan yayınlanan her List<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ğin PagingData 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 bir Flow<PagingData<T>> çıkışını doğrulamak için kullanılabilir.

    Bu işlem, Flow<PagingData<Value>> üzerindeki asSnapshot Kotlin uzantısı kullanılarak yapılır ve Flow<PagingData<Value>>, doğrudan List<Value> değerine çevrilir. asSnapshot lambda, scrollTo veya appendScrollWhile gibi API'ler aracılığıyla uygulamanızın kullanıcı arayüzünü tekrarlanabilir ve tutarlı bir şekilde taklit etmenize olanak tanır. Böylece, 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 bir suspend yöntemidir. Daha fazla bilgi için Android'de Kotlin eş yordamlarını test etme konusuna bakın. (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, I29b9, I51f4d

API Değişiklikleri

  • AsyncPagingDataDiffer ve PagingDataAdapter içinde getItem ve peek 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 ile LoadResult.Page.iterator() arasında uygun iterasyonu etkinleştirir. Bu, PagingSource.getRefreshKey yöntemine aktarılan PagingState pages özelliği gibi bir List<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ık AsyncPagingDataDiffer veya PagingDataAdapter sınıfları üzerinden günlükler sağlamaktadır.
  • Günlükler, adb shell komutuyla etkinleştirilebilir adb 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 eksik PagingDataDiffer oluşturucu hatası düzeltildi.(b/235256201)

Sürüm 3.2.0-alpha01

1 Haziran 2022

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

API Değişiklikleri

  • PagingDataAdapter ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden kurucular eklendi. (Idc878)
  • Varsayılan olarak PagingData.from() ve PagingData.empty(), artık sunucu tarafındaki CombinedLoadStates uygulamasını etkilemez. LoadStates ayarının tamamen terminal (ör.sourceLoadStatesremoteLoadStates NotLoading(endOfPaginationReached = false)) içerir. LoadStates iletilmezse önceki CombinedLoadStates, statik PagingData 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 şekilde initialKey üzerinde önceliklendirilmiş, ancak null olmayan bir initialKey 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 ara LoadState.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 gereksiz LoadState.NotLoading etkinliklerini kaldırarak LoadState 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 ve Flow<PagingData>.flowable API'leri artık deneysel değil
  • LoadState ile ilgili davranış değişiklikleri:
    • endOfPaginationReached, PagingSource ve RemoteMediator için LoadType.REFRESH boyunca her zaman false olur.
    • Sayfalandırmadan LoadStates artık aşağı doğru yayınlamadan önce hem PagingSource hem de RemoteMediator değerlerinden geçerli değerleri bekliyor. Yeni nesil PagingData, yenileme durumu için artık her zaman doğru şekilde Loading ile başlar. Bazı durumlarda NotLoading ayarı yanlış bir şekilde ayarlanır.
    • Sunucu API'lerinde .loadStateFlow ve .addLoadStateListener, artık aracı durumu her zaman null olarak ayarlanmış ilk CombinedLoadStates 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 bu PagingSource 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 ve Flow<PagingData>.flowable API'leri artık deneysel değildir. (Ie0bdd)

Hata Düzeltmeleri

  • LoadStates söz konusu olduğunda endOfPaginationReached, artık LoadType.REFRESH için her zaman false olur. Daha önce, endOfPagcationReached için RemoteMediator REFRESH değeri true 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 zaman false 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 zaman null, kaynak durumları ise NotLoading(endOfPaginationReached = false) olarak ayarlanmış başlangıç CombinedLoadStates göndermez. Bu gelişme şu anlama geliyor:

    1. RemoteMediator kullanırsanız aracı durumları her zaman doldurulur.
    2. .loadStateFlow üzerinde yeni bir loadState işleyicisi veya yeni bir toplayıcı kaydetmek, PagingData'dan gerçek bir CombinedLoadStates 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ık paging-rxjava2 (Ifa7f6) ile çakışmamaları için androidx.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şturup PagingData öğesini MutableStateFlow içinde (ör. MutableStateFlow(PagingData.from(listOf(1, 2, 3)))). Bu veriler @Preview için girdi olarak kullanıldığında collectAsLazyPagingItems() çağrıları önizlenebilir LazyPagingItems 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ündeki items ve itemsIndexed uzantısı işlevleri artık yeni API'lerdeki desteği yansıtan contentType 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

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 eksik PagingDataDiffer 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 ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden kurucular eklendi. (Idc878)

Hata Düzeltmeleri

  • LazyPagingItems, şimdi başlangıçtaki loadState öğesini LoadState.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ılan items(lazyPagingItems) ve itemsIndexed(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 yerine lazyPagingItems[index] politikasını kullanın. (I086cb, b/187339372)

Sürüm 1.0.0-alpha11

30 Haziran 2021

androidx.paging:paging-compose:1.0.0-alpha11 yayınlandı. 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ştur 1.0.0-beta07 ve sonraki sürümlerle uyumludur.

Sürüm 1.0.0-alpha08

24 Şubat 2021

androidx.paging:paging-compose:1.0.0-alpha08 yayınlandı. 1.0.0-alpha08 sürümü 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 durumu NotLoading olduktan sonra Loading ürününden NotLoading'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öntemleri LazyPagingItem öğ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 öğesine LivePagedList veya RxPagedList 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ığında DataSource.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 zaman null 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 bazen IndexOutOfBoundsException: Inconsistency detected hatası düzeltildi
  • Uyumluluk yolları aracılığıyla kullanılan DataSource öğesinin ilk kullanıma hazırlanması sırasında yapılan isInvalid çağrısı, artık ana iş parçacığı yerine fetchDispatcher'da doğru şekilde başlatılıyor. Bu işlem, Odanın PagingSource 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ızca null değerini döndürür. Ancak getRefreshKey(), 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ın PagingState.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ında RemoteMediator.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 durumu NotLoading olduktan sonra Loading ürününden NotLoading'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 zaman PagingConfig.pageSize değerine eşittir.

    Paging2 DataSource'unuzu bir Pager veya PagedList kullanmadan test ediyorsanız ve initialLoadSize ayarını yapıyorsanız pageSize, 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()) destekleyen DataSource 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 ve dataRefreshListener 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 }
    

    (Ib5570, b/173530908)

Hata Düzeltmeleri

  • REFRESH RemoteMediator için endOfPaginationReached, artık LoadState güncellemelerine doğru şekilde yayılır ve uzak APPEND ile PREPEND öğelerinin tetiklenmesini engeller. (I94a3f, b/155290248)
  • Boş başlangıç sayfası veya yoğun filtreleme nedeniyle boş bir liste sunmak artık Sayfalamanın PREPEND veya APPEND 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 ve PagingSource.load(LoadParams.Refresh(...)) tamamlanırsa RemoteMediator'ı kullanmak, uzak LoadState öğ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ık PagingDataAdapter.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 ve PagingDataAdapter uygulamalarına peek() API eklendi. (I38898, b/159104197)
  • Sayfa getirme işlemini tetiklemeden sunulan öğelerin alınmasına izin vermek için PagingDataAdapter ve AsyncPagingDataDiffer öğelerine snapshot() 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 ve RemoteMediator için RxJava3 uyumluluk sarmalayıcıları eklendi (I49ef3, b/161480176)

Hata Düzeltmeleri

  • PositionalDataSource, toPagingSourceFactory yardımcısı aracılığıyla PagingSource biçimine dönüştürüldü (Oda tarafından oluşturulan PagingSource 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 eklendi
  • PagingDataAdapter ve AsyncPagingDataDiffer oluşturucuları için ortak varsayılan değerlere (Ie91f5) sahip aşırı yüklemeler eklendi
  • Adaptör API'leri, dataRefreshFlow ve dataRefreshListener artık bir PagingData öğ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() ve firstItemOrNull() 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 fazla PagingData ü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

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 olarak androidx.paging.Config() eklendi
  • PagedList.Builder için Kotlin alternatifi olarak androidx.paging.PagedList() eklendi
  • LivePagedListBuilder için Kotlin alternatifi olarak DataSourceFactory.toLiveData() eklendi
  • RxPagedListBuilder için Kotlin alternatifleri olarak DataSourceFactory.toObservable() ve toFlowable() eklendi
  • 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ık IndexOutOfBoundsException 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 ve AsyncPagedListDiffer öğ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 ve AsyncPagedListDiffer ö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, yeni android.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ı dosya setFetchExecutor() olarak yeniden adlandırıldı (PagedList.Builder ve LivePagedListBuilder içinde)

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

  • PagedList.mCallbacks üyenin gizli olarak ayarlanması düzeltildi.

Hata Düzeltmeleri

  • LivePagedListBuilder, ilk PagedList 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 ve DataSource.LoadCallback nesne artık soyut. Bu, bir DataSource öğesinin sarmalanmasını veya örnek geri çağırma kullanılarak DataSource öğesini doğrudan test etmeyi sağlar. b/72600421
  • DataSource ve DataSource.Factory haritacıları
    • map(Function<IN,OUT>), bir DataSource 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 ve LivePagedListProvider 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çin BoundaryCallback.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