Sayfalama

Sayfa Oluşturma Kitaplığı, uygulamanızın içinde verileri kademeli ve incelikle yükleyebilmeniz için RecyclerView öğelerini güncelleyin.

Bu tabloda androidx.paging grubundaki tüm yapılar listelenmektedir.

Yapı Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
sayfalama-* 3.3.1 - - -
sayfalama-oluşturma 3.3.1 - - -
Bu kütüphanenin son güncellenme tarihi: 24 Temmuz 2024

Bağımlılıkları bildirme

Sayfalama'ya bağımlılık eklemek için Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.

build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin. uygulamanız veya modülünüz:

Modern

dependencies {
  def paging_version = "3.3.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.1"
}

Kotlin

dependencies {
  val paging_version = "3.3.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.1")
}

Kotlin uzantılarını kullanma hakkında bilgi için bkz. ktx belgelerine bakın.

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme bölümüne bakın.

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.

Yeni sayı oluştur

Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.

Sürüm 3.3

Sürüm 3.3.1

24 Temmuz 2024

androidx.paging:paging-*:3.3.1 yayınlandı. Sürüm 3.3.1 bu taahhütleri içerir.

Hata Düzeltmeleri

  • Yedekleme veri kaynağı kaydırma sırasında yenilendiğinde, RecyclerView ile kullanılan PagingDataAdapter gibi AsyncPagingDataDiffer veya API'lerin daha fazla yüklemeyi tetikleyememesine neden olan sorun düzeltildi. (I60ca5, b/352586078)
  • PagingDataAdapter veya AsyncPagingDataDiffer kullanarak bir RecyclerView kaydırılırken öğeler yedek veri kaynağından kaldırıldığında ortaya çıkan kilitlenme düzeltildi. (I8c65a, b/347649763)

Sürüm 3.3.0

14 Mayıs 2024

androidx.paging:paging-*:3.3.0 yayınlandı. Sürüm 3.3.0 bu taahhütleri içerir.

3.2.0'dan bu yana önemli değişiklikler

  • PagingDataPresenter artık herkese açık bir sınıf. Çoklu platform sunucuları artık dahili Paging API'lerine veya paging-runtime AsyncPagingDataDiffer öğesine gerek kalmadan PagingDataPresenter temel alınarak oluşturulabilir.
  • LoadStates öğesinin sırasıyla Hata veya NotLoading durumunda olup olmadığını kontrol etmek için hasError ve isIdle için yeni LoadStates ve CombinedLoadStates yardımcı yöntemleri eklendi. Ayrıca Flow<CombinedLoadStates> cihazına, yükleme NotLoading veya Hata durumu olarak düzeltilene kadar bekleyecek yeni bir awaitNotLoading() Kotlin uzantı yöntemi eklendi.
  • PagingData.empty(), kurucusuna özel LoadStates iletilmediği sürece artık NotLoading durumlarını varsayılan olarak gönderiyor. Bu, PagingDataAdapter öğesine gönderildiğinde LoadStates öğesinin gönderilmediği veya LazyPagingItems olarak toplandığında Yükleme durumlarını yayınladığı mevcut davranıştan ayrılır. LazyPagingItems olarak toplandığında artık ilk bestenin hemen ardından boş bir liste de gösterilecek.

Kotlin Çoklu Platform Uyumluluğu

Büyük ölçüde CashApp'in multiplatform-paging projesindeki yukarı akışlı çalışmaların da etkisiyle artık Kotlin Multiplatform ile uyumlu olan yapılar artık PageSpeed'e iletiliyor.

  • paging-common, tüm Paging 3 API'lerini common hedefine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.
  • paging-testing, kodunu common öğesine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.
  • paging-compose, kodunu common platformuna taşıdı ve androidx.compose adlı uygulamanın çoklu platform desteğiyle eşleşen bir Android yapısı gönderdi.
  • paging-runtime, paging-guava, paging-rxjava2 ve paging-rxjava3 yalnızca Android'de kalacak.

Sürüm 3.3.0-rc01

1 Mayıs 2024

androidx.paging:paging-*:3.3.0-rc01, Sayfa 3.3.0-beta01'de herhangi bir değişiklik yapılmadan yayınlandı. Sürüm 3.3.0-rc01 bu kayıtları içerir.

Sürüm 3.3.0-beta01

3 Nisan 2024

androidx.paging:paging-*:3.3.0-beta01 herhangi bir önemli değişiklik yapılmadan yayınlandı. Sürüm 3.3.0-beta01 bu taahhütleri içerir.

Sürüm 3.3.0-alpha05

20 Mart 2024

androidx.paging:paging-*:3.3.0-alpha05 yayınlandı. Sürüm 3.3.0-alpha05 bu kaydetmeleri içerir.

API Değişiklikleri

  • Sayfalamada artık ortak kodlar için AndroidX Ek Açıklaması @MainThread ek açıklaması kullanılıyor. (I78f0d, b/327682438)

Sürüm 3.3.0-alpha04

6 Mart 2024

androidx.paging:paging-*:3.3.0-alpha04 yayınlandı. Sürüm 3.3.0-alpha04 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Kotlin çoklu platform uyumluluğunun eklenmesiyle ilgili küçük belge hataları düzeltildi. (aosp/2950785)

Sürüm 3.3.0-alpha03

7 Şubat 2024

androidx.paging:paging-*:3.3.0-alpha03 yayınlandı. Sürüm 3.3.0-alpha03 bu kaydetmeleri içerir.

Yeni Özellikler

  • PagingDataPresenter artık herkese açık bir sınıf. Çoklu platform sunucuları artık dahili Paging API'lerine veya paging-runtime AsyncPagingDataDiffer öğesine gerek kalmadan PagingDataPresenter temel alınarak oluşturulabilir. (Id1f74, b/315214786)
  • LoadStates öğesinin Hata veya NotLoading durumunda olup olmadığını kontrol etmek için yeni LoadStates ve CombinedLoadStates yardımcı yöntemleri eklendi. Ayrıca, bir yük NotLoading veya Hata durumuna gelene kadar LoadStateFlow üzerinde bekleyecek yeni bir API de eklendi. (Id6c67)

Davranış değişikliği

  • PagingData.empty(), kurucusuna özel LoadStates iletilmediği sürece artık NotLoading durumlarını varsayılan olarak gönderiyor. Bu, PagingDataAdapter öğesine gönderildiğinde LoadStates öğesinin gönderilmediği veya LazyPagingItems olarak toplandığında Yükleme durumlarını yayınladığı mevcut davranıştan ayrılır. LazyPagingItems olarak toplandığında artık ilk bestenin hemen ardından boş bir liste de gösterilecek. (I4d11d, b/301833847)

Sürüm 3.3.0-alpha02

20 Eylül 2023

androidx.paging:paging-*:3.3.0-alpha02 yayınlandı. 3.3.0-alpha02 sürümü bu kaydetmeleri içerir.

Kotlin Çoklu Platform Uyumluluğu

Büyük ölçüde CashApp'in multiplatform-paging projesindeki yukarı akışlı çalışmaların da etkisiyle artık Kotlin Multiplatform ile uyumlu olan yapılar artık PageSpeed'e iletiliyor. Bu, iki depo arasındaki farklılaşmayı önlememize ve bunları uyumlu tutmamıza olanak tanır.

  • paging-common, tüm Paging 3 API'lerini common hedefine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.
  • paging-testing, kodunu common öğesine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.
  • paging-compose, kodunu common platformuna taşıdı ve androidx.compose adlı uygulamanın çoklu platform desteğiyle eşleşen bir Android yapısı gönderdi.
  • paging-runtime, paging-guava, paging-rxjava2 ve paging-rxjava3 yalnızca Android'de kalacak.

API Değişiklikleri

  • Yalnızca dahili kullanıma yönelik olan herkese açık Günlük Kaydedici arayüzü kullanımdan kaldırılmıştır (I16e95, b/288623117)

Harici Katkı

Sürüm 3.3.0-alpha01

20 Eylül 2023

  • Bu, androidx.paging kitaplıklarının ilk çoklu platform sürümüdür. Bu sürümde yalnızca *-jvm ve *-android yapısı var. macOS, iOS ve Linux varyantları iç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 kaydetmeleri içerir.

Hata Düzeltmeleri

  • Yükleme tamamlandığında (PagingData.from(List, LoadStates) aşırı yükünden farklı olarak) asSnapshot() öğesi hakkında bilgi bulunmaması nedeniyle, Sayfalama Testi yapısının asSnapshot() API'sinin PagingData.from(List) kullanılarak oluşturulan bir Akıştan geçildiğinde takılı kalması sorunu düzeltildi. Bu geçici çözüm yalnızca uyumlu Akışlar (ör. flowOf(PagingData.from(...))) için işe yarar. Uyumlu olmayan akışlar (ör. MutableStateFlow için LoadStates sağlayan PagingData.from aşırı yüklemesini kullanın). (I502c3)
  • Oluşturma sayfası, yeni verilerin yükleme tamamlanırken aynı çerçevede kullanılabilir olmasını sağlamak için artık dahili olarak AndroidUiDispatcher.Main kullanıyor. (Ia55af)

Sürüm 3.2.0

26 Temmuz 2023

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

3.1.0'dan bu yana önemli değişiklikler

  • Compose sayfası, API kararlılığına ulaştı ve PageSpeed'in geri kalanıyla birleştirildi. Buradaki sürüm artık diğer tüm Sayfalama yapılarıyla eşleşir. 3.1.0 sürümünden bu yana yapılan değişiklikler şunlardır:
    • Bir PagingData.from(fakeData) oluşturup bu PagingData öğesini bir MutableStateFlow içine sarmalayarak sahte veriler listesini önizleme (ör. MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) desteği. Önizlemek için bu akışı collectAsLazyPagingItems() için alıcı olarak @Preview composable'a iletin.
    • LazyVerticalGrid ve HorizontalPager gibi tüm geç düzenlerin yanı sıra Wear ve TV kitaplıklarındaki özel geç bileşenleri için destek. Bu, key ve contentType parametrelerini LazyColumn ve LazyVerticalGrid için zaten mevcut olan standart items API'lerinin yanı sıra HorizontalPager gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olan yeni alt düzey LazyPagingItems uzantı yöntemleri itemKey ve itemContentType ile elde edildi.
    • Yalnızca LazyListScope desteği olan items(lazyPagingItems) ve itemsIndexed(lazyPagingItems) desteği sonlandırıldı.
  • Uygulamanızın her katmanını test etmeye ve bunun tek başına Sayfalandırma ile entegrasyonuna dayalı olarak tasarlanmış API'ler sağlayan yeni paging-testing yapısı. Örneğin,
    • Kendi özel PagingSource uygulamanızın davranışını, Çağrı Cihazı ve gerçek kullanıcı arayüzünden bağımsız olarak doğrulamanıza olanak tanıyan TestPager sınıfını kullanabilirsiniz.
    • Flow<List<Value>> veya statik List<Value> öğesini testlerde Çağrı Cihazı'na iletilebilecek bir PagingSourceFactory biçimine dönüştürmek için kullanılan asPagingSourceFactory API'leri
    • Flow<PagingData<Value>> için asSnapshot Kotlin uzantısı. Bu uzantı, Flow<PagingData<Value>> parametresini doğrudan List<Value> diline çevirir. 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 gösterecek şekilde varsayılan günlükler eklendi: VERBOSE ve DEBUG. Günlükler, adb shell setprop log.tag.Paging [DEBUG|VERBOSE] komutuyla etkinleştirilebilir. Bu durum hem görünüm içeren sayfalara ayırma hem de Oluşturma ile sayfalara ayırma için geçerlidir.
  • PagingDataAdapter ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden kurucular eklendi.
  • Öncekine () göre daha açık bir API yüzeyi sağlayan yeni bir PagingSourceFactory işlevsel arayüzü eklendi -> PagingSource lambda. Bu fabrika, Çağrı Cihazı örneği oluşturmak için kullanılabilir.

Sürüm 3.2.0-rc01

21 Haziran 2023

androidx.paging:paging-*:3.2.0-rc01 yayınlandı. Sürüm 3.2.0-rc01 bu kaydetmeleri içerir.

Harici Katkı

  • Sayfalama'nın Android/JVM özellerinden uzaklaşmasına katkılarından dolayı Veyndan'a teşekkür ediyoruz. (#553, #554, #555, #559)

Sürüm 3.2.0-beta01

7 Haziran 2023

androidx.paging:paging-*:3.2.0-beta01 yayınlandı. Sürüm 3.2.0-beta01 bu kaydetmeleri içerir.

İleti Oluşturma

  • Compose sayfası, resmi olarak API kararlılığına ulaştı. Bu nedenle 1.0.0-alpha20 olan sürüm, artık diğer tüm Sayfalandırma yapılarının sürümüyle eşleşecek şekilde güncellendi.

API Değişiklikleri

  • Kullanımdan kaldırılan items(LazyPagingItems) ve itemsIndexed(LazyPagingItems) API'leri Sayfa Oluşturma Sayfası'ndan kaldırıldı. Bunların yerine geçecek API'lerin bir örneğini görmek için Paging Compose 1.0.0-alpha20 sürüm notlarına bakın. (I9626e)

Sürüm 3.2.0-alpha06

24 Mayıs 2023

androidx.paging:paging-*:3.2.0-alpha06 yayınlandı. Sürüm 3.2.0-alpha06 bu kaydetmeleri içerir.

Yeni Özellikler

  • Mevcut () -> PagingSource lambda'larına göre daha açık bir API yüzeyi sağlayan yeni bir PagingSourceFactory işlevsel arayüzü eklendi. Bu fabrika, Pager örneği oluşturmak için kullanılabilir. (I33165, b/280655188)
  • Yalnızca sabit veri listesinden yüklenen bir PagingSourceFactory elde etmek için List<Value>.asPagingSourceFactory() öğesine yeni paging-testing API eklendi. Flow<List<Value>> üzerindeki mevcut uzantı, birden fazla nesil statik veriyle test yapmak için kullanılmalıdır. (Id34d1, b/280655188)

API Değişiklikleri

  • Sayfalama testindeki tüm herkese açık API'lerin yalnızca testlerde kullanıldığından emin olmak için artık @VisibleForTesting ile ek açıklama veriliyor. (I7db6e)
  • asSnapshot API artık bir CoroutineScope öğesinin iletilmesini gerektirmiyor. Artık varsayılan olarak, üst kapsamından devralınan bağlamı kullanıyor. (Id0a78, b/282240990)
  • TestPager kurucu parametreleri, gerçek Pager oluşturucu parametrelerinin (I6185a) düzeniyle sezgisel olarak eşleşecek şekilde yeniden sıralandı
  • Sayfalandırma testinin () -> PagingSource<Key, Value> lambda türü kullanımı PagingSourceFactory<Key, Value> türüne taşındı. (I4a950, b/280655188)

Davranış Değişiklikleri

  • Artık ana sevk görevlisinin asSnapshot Çağrı testlerini çalıştırması gerekmiyor. Bunu ayarladığınızda test davranışında artık herhangi bir değişiklik yapılmaz. (Ie56ea)

Sürüm 3.2.0-alpha05

3 Mayıs 2023

androidx.paging:paging-*:3.2.0-alpha05 yayınlandı. 3.2.0-alpha05 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • asSnapshot ürününün Paging Testing API'si artık loadOperations parametresini varsayılan olarak boş bir lambda olarak ayarlıyor. Böylece, ilk yenileme yükünden verileri almak için herhangi bir yükleme işlemi geçirmeden asSnapshot çağrısına izin verilir. (Ied354, b/277233770)

Belgelerdeki İyileştirmeler

  • asPagingSourceFactory() ile ilgili dokümanlar, bu yöntemin PagingSource örnek oluşturmak için yeniden kullanılabilir bir fabrika değeri döndüren Flow üzerinde bir uzantı yöntemi olduğunu netleştirecek şekilde güncellendi. (I5ff4f, I705b5)
  • Atlamayı desteklemek için itemsBefore ve itemsAfter geçersiz kılmalarının geçersiz kılınması gerektiğini açıklığa kavuşturmak için LoadResult.Pageoluşturucudaki 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ı. 3.2.0-alpha04 sürümü bu kaydetmeleri içerir.

Çağrı Testi

  • paging-testing yapısı artık Çağrı Cihazı'na sağlanacak Flow<List<Value>> öğesinden pagingSourceFactory oluşturmak için asPagingSourceFactory yöntemini içeriyor. Akıştan yayınlanan her List<Value>>, sayfalandırılmış verilerin oluşturulmasını temsil eder. Bu, örneğin Çağrı Cihazı'nın veri toplaması için gereken veri kaynağını taklit ederek PagingData dönüşümlerinde sayfalandırma testlerini kolaylaştırır. (I6f230, b/235528239)
  • paging-testing yapısı, Flow<PagingData<T>> öğesinde bulunan verilerin doğru olduğunu doğrulamaya uygun yeni API'lerle genişletildi. Bu, örneğin ViewModel katmanınızdan bir Flow<PagingData<T>> çıkışını doğrulamak için kullanılabilir.

    Bu işlem, Flow<PagingData<Value>> adresindeki asSnapshot Kotlin uzantısı aracılığıyla yapılır. Kotlin uzantısı, Flow<PagingData<Value>> değerini doğrudan List<Value> diline dönüştürür. asSnapshot lambda, uygulamanızın kullanıcı arayüzünü scrollTo veya appendScrollWhile gibi API'ler üzerinden tekrarlanabilir ve tutarlı bir şekilde taklit etmenize olanak tanır. Böylece, sayfalandırılmış veri kümenizin herhangi bir noktasında verilerin anlık görüntüsünün doğru olduğunu doğrulayabilirsiniz.

    // Create your ViewModel instance
    val viewModel = …
    // Get the Flow of PagingData from the ViewModel
    val data< Flow<PagingData<String>> = viewModel.data
    val snapshot: List<String> = data.asSnapshot {
      // Each operation inside the lambda waits for the data to settle before continuing
      scrollTo(index = 50)
    
      // While you can’t view the items within the asSnapshot call,
      // you can continuously scroll in a direction while some condition is true
      // i.e., in this case until you hit a placeholder item
      appendScrollWhile {  item: String -> item != “Header 1” }
    }
    // With the asSnapshot complete, you can now verify that the snapshot
    // has the expected values
    

    asSnapshot, runTest içinde çalışması beklenen 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, {169,

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 ileti dizisinde doğru şekilde tek çağrılabilir olarak işaretleniyor. (I699b6)
  • TestPager tarafından kullanılan genel türlerdeki joker karakterler kaldırıldı. Böylece, bu yöntemlerin sonuçlarının Java programlama dilinde yazılmış kod kullanılarak alınması kolaylaştırıldı. (I56c42)

Sürüm 3.2.0-alpha03

24 Ekim 2022

androidx.paging:paging-*:3.2.0-alpha03 yayınlandı. Sürüm 3.2.0-alpha03 bu kaydetmeleri içerir.

Çağrı Testi

Bu sürüm yeni bir yapı içeriyor: paging-testing. Bu yapı, uygulamanızın her katmanını birim test etme ve bunun tek başına Sayfalama ile entegrasyonu etrafında tasarlanmış API'ler sağlar.

Örneğin, bu ilk sürüm, kendi özel PagingSource uygulamanızın davranışını Pager ve normalde uçtan uca sayfalandırma entegrasyonunu simüle etmek için ihtiyaç duyacağınız gerçek kullanıcı arayüzünden bağımsız olarak doğrulamanıza olanak tanıyan bir TestPager sınıfı içerir.

TestPager, sahte olarak düşünülmelidir. Bu, Pager öğesinin gerçek uygulamasını yansıtırken PagingSource testi için basitleştirilmiş bir API yüzeyi sağlayan test çifti olarak değerlendirilir. Bu API'ler suspend API'leridir ve Android'de Kotlin eş yordamlarını test etme rehberinde açıklandığı gibi runTest içinde çalıştırılmalıdır.

Bu API'lerin kullanımdaki örneklerini, TestPager kullanacak şekilde yeniden düzenlenen room-paging testlerinde bulabilirsiniz.

API Değişiklikleri

  • LoadResult.Page.data ile LoadResult.Page.iterator() arasında uygun yinelemeyi sağlar. Bu, PagingSource.getRefreshKey yöntemine iletilen PagingState pages özelliği gibi bir List<LoadResult.Page> sağlandığında Kotlin standart kitaplığı flatten yönteminin kullanılmasına dolaylı olarak izin verir. (Ie0718)

Sürüm 3.2.0-alpha02

10 Ağustos 2022

androidx.paging:paging-*:3.2.0-alpha02 yayınlandı. 3.2.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Sayfalama, PagingData ürününden toplanan hata ayıklama bilgilerinin gösterilmesi için artık AsyncPagingDataDiffer veya PagingDataAdapter sınıfları aracılığıyla günlükleri sağlamaktadır.
  • Günlükler, adb shell komutuyla adb shell setprop log.tag.Paging [DEBUG|VERBOSE]. etkinleştirilebilir(b/235527159)

Hata Düzeltmeleri

  • paging-common:3.2.0-alpha01, paging-runtime:3.1.1 veya daha eski bir çalışma zamanıyla kullanılırken 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 kaydetmeleri 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(), sunucu tarafındaki CombinedLoadStates adlı kullanıcıyı artık etkilemeyecek. LoadStates ayarının mevcut davranışını tam olarak terminal (yanisourceLoadStatesremoteLoadStates NotLoading(endOfPaginationReached = false)) ekleyebilirsiniz. LoadStates geçmezse önceki CombinedLoadStates, statik PagingData aldığında sunucu tarafında korunur. (Ic3ce5, b/205344028)

Hata Düzeltmeleri

  • Boş değeri döndüreceği ancak boş olmayan bir initialKey ayarlandığı durumlarda PagingSource.getRefreshKey() sonucu, initialKey üzerinden artık doğru şekilde öncelik sırasına koyuldu. (Ic9542, b/230391606)

Harici Katkı

  • test-coroutines-lib taşıma işlemi nedeniyle (I3366d) :compose:ui:ui-test api (updateApi) güncellendi

Sürüm 3.1

Sürüm 3.1.1

9 Mart 2022

androidx.paging:paging-*:3.1.1 yayınlandı. Sürüm 3.1.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • .cachedIn() tarafından yanlış şekilde eklenen nesiller arasındaki ara LoadState.NotLoading etkinlikleri kaldırıldı. Bu değişiklik, yeniden başarısız yüklemeler, yenileme veya geçersiz kılma sırasında oluşturulan gereksiz LoadState.NotLoading etkinliklerini kaldırarak LoadState değişikliklerine tepki vermeyi çok daha kolay hale getirir.

Sürüm 3.1.0

17 Kasım 2021

androidx.paging:paging-*:3.1.0 yayınlandı. 3.1.0 sürümü bu kaydetmeleri içerir.

3.0.0'dan bu yana önemli değişiklikler

  • Flow<PagingData>.observable ve Flow<PagingData>.flowable API'leri artık deneysel değil
  • Davranış LoadState olarak değişir:
    • endOfPaginationReached artık hem PagingSource hem de RemoteMediator için LoadType.REFRESH için her zaman false
    • Sayfalamadan LoadStates özelliği artık aşağı akış yayınlamadan önce hem PagingSource hem de RemoteMediator kaynaklı geçerli değerler bekliyor. Artık yeni nesil PagingData sürümleri, bazı durumlarda hatalı şekilde NotLoading değerine sıfırlamak yerine yenileme durumu için her zaman doğru şekilde Loading ile başlayacak.
    • Sunucu API'lerindeki .loadStateFlow ve .addLoadStateListener artık her zaman arabulucu durumları null olarak ayarlanmış bir başlangıç CombinedLoadStates öğesini yedek olarak göndermiyor
  • Artık geçmiş nesillerde iptal işlemleri, geçersiz kılma / yeni nesiller için yoğun bir şekilde gerçekleştiriliyor. Her ne kadar önerilse de artık Flow<PagingData> sitesinde .collectLatest kullanmak zorunlu olmayacaktır.
  • PagingSource.LoadResult.Invalid, PagingSource.load kaynağından yeni bir dönüş türü olarak eklendi. Bu durum, Sayfalama özelliğinin bu PagingSource için bekleyen veya gelecekteki tüm yükleme isteklerini silip geçersiz kılmasına neden olur. Bu döndürme türü, veritabanından veya ağdan döndürülebilecek geçersiz ya da eski verileri işleyecek şekilde tasarlanmıştır.
  • Sayfalar kullanıcı arayüzünde sunulurken eşzamanlı olarak tetiklenen .onPagesPresented ve .addOnPagesUpdatedListener sunucu API'leri eklendi. Sayfa güncellemeleri aşağıdaki senaryolarda gerçekleşebilir:
    • Yeni nesil PagingData'nın sunulan öğelerde herhangi bir değişiklik içerip içermediğine bakılmaksızın yeni nesil PagingData'nın ilk yüklemesi tamamlanır. ör. Liste tamamen aynı olduğundan ilk yüklemeyi hiçbir güncelleme olmadan tamamlayan yeni nesil, bu geri çağırmayı tetikler.
    • Eklenen sayfa yeni öğe içermese bile sayfa eklenir.
    • Bir sayfa, bırakılan sayfa boş olsa bile atlanır.

Sürüm 3.1.0-rc01

3 Kasım 2021

androidx.paging:paging-*:3.1.0-rc01 yayınlandı. Sürüm 3.1.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Gözlemci yokken veya bir gözlemcinin yeni bir PagingData'ya geçiş yaptığı sırada aşağı akışta Sayfalama tarafından birden fazla yükleme etkinliğinin gönderilmesi durumunda .cachedIn() işlevinde bir yarış durumu ve bellek sızıntısı düzeltildi. (Ib682e)

Sürüm 3.1.0-beta01

13 Ekim 2021

androidx.paging:paging-*:3.1.0-beta01 yayınlandı. Sürüm 3.1.0-beta01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Birçok hızlı öğe erişiminin, bunların prefetchReach'te değerlendirilmek üzere atılmasına ve sayfa yüklemelerinin duraklamasına neden olabileceği sorun düzeltildi. Bu durum özellikle, birçok öğenin aynı anda ve kullanıcının kaydırma yönüne göre yüklemeye öncelik verecek şekilde yerleştirilmesi durumunda ortaya çıkar. Bu öğe erişimleri artık arabelleğe alınıyor ve atılmasını önlemek için eşzamanlı olarak öncelik veriliyor. (aosp/1833273)

Sürüm 3.1.0-alpha04

29 Eylül 2021

androidx.paging:paging-*:3.1.0-alpha04 yayınlandı. 3.1.0-alpha04 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Flow<PagingData>.observable ve Flow<PagingData>.flowable API'leri artık deneysel değil. (Ie0bdd)

Hata Düzeltmeleri

  • LoadStates için endOfPaginationReached artık her zaman false LoadType.REFRESH için. Eskiden yalnızca REFRESH RemoteMediator için endOfPaginationReach true oldu, ancak PagingSource için. Bu davranış artık her zaman döndürülecek şekilde birleştirildi false için REFRESH'in terminal olması hiçbir zaman anlamlı değildir ve şu anda LoadStates'te API sözleşmesinin bir parçası olarak belgelenmiştir. Projenin genel olarak sayfalara ayırma işlemi sonlandırıldığında, bunu her zaman UYGULA veya BAŞA EKLEYİN talimatlarından birini seçin. (I047b6)
  • Sayfalamadaki LoadStates değerleri artık her ikisinden de geçerli değerler bekliyor PagingSource ve RemoteMediator arasında aşağı akış yapmadan önce nesillerdir. Bu işlem, yeni nesil PagingData'nın gönderilmesini engeller Önceden yapılmışsa MergedLoadStates.source.refresh konumunda NotLoading Yükleniyor; yeni nesil PagingData'lar artık her zaman doğru şekilde başlatılacak Önce NotLoading durumuna sıfırlamak yerine yenileme durumu için Yükleme ile bazı durumlarda hata yapabilir.

    Geçmiş nesillerde iptal işlemleri artık istekli bir şekilde geçersiz kılma / yeni nesiller. Artık .collectCollect'in kullanılması için artık gerekli olmamalıdır. üzerinde Flow<PagingData> bulun. Ancak yine de önemle tavsiye edilir. (I0b2b5, b/177351336, b/195028524)

  • Sunucu API'lerinde .loadStateFlow ve .addLoadStateListener artık her zaman yedeklenmiş bir başlangıç CombinedLoadStates'sı göndermemeli arabulucu durumları null ve kaynak durumları NotLoading(endOfPaginationReached = false). Bunun anlamı:

    1. RemoteMediator'ı kullanırsanız aracı durumları her zaman doldurulur.
    2. Şuna yeni bir loadState dinleyicisi veya yeni bir toplayıcı kaydetme .loadStateFlow, geçerli değeri hemen uygulamayacak veya gerçek bir CombinedLoadStates PagingData. Bu durum, bir toplayıcı veya dinleyicinin PagingData gönderilmeden önce işlem yapın. (I1a748)

Sürüm 3.1.0-alpha03

21 Temmuz 2021

androidx.paging:paging-*:3.1.0-alpha03 yayınlandı. Sürüm 3.1.0-alpha03 bu kaydetmeleri içerir.

API Değişiklikleri

  • Üçüncü bir LoadResult dönüş türü LoadResult.Geçersiz Sayfa Kaynağı. Bir PagingSource.load döndüğünde LoadResult.Geçersiz, sayfalara ayırma işlemi, yüklenen verileri siler ve PagingSource'u geçersiz kılar. Bu dönüş türü şunun için tasarlanmıştır: döndürülebilecek geçersiz veya eski verileri işleme veri tabanından veya ağdan.

    Örneğin, temel veritabanının yazımı ile PagingSource, zamanı geçersiz kılmaz, döndürebilir tutarsız sonuçlar da veri kümesinin kaynak veri kümesinin sabitliği (ör. SINIR OFFSET stili db uygulamaları). Bu senaryoda yüklemenin ardından geçersiz kılmayı kontrol etmeniz ve loadResult.Geçersiz hatası döndürerek, Sayfalama'nın bu PagingSource'a yönelik bekleyen veya gelecekteki yükleme istekleri geçersiz kılar.

    Bu dönüş türü, Paging2 API tarafından da desteklenir. LivePagedList veya RxPagedList gibi olduğundan emin olun. PagingSource ile birlikte Paging2'nin PagedList API'leri, PagedList hemen çıkarılır, Böylece, bu PagedList'e veri yüklemek için daha fazla girişimde PagingSource'ta geçersiz kılmayı tetikler.

    LoadResult, kapalı bir sınıftır, yani kullanım alanlarının doğrudan PagingSource.load sonuçlarının, LoadResult.Geçersiz sırasında görünür. Örneğin, 2021 yılından bugüne kadar Kapsamlı-ne zaman iade türünün kontrol edileceğine dair bir kontrol eklemesi gerekir geçersiz tür. (Id6bd3, b/191806126, b/192013267)

Hata Düzeltmeleri

  • Geçersiz kılma geri çağırmaları, üzerinden eklendi PagingSource.registerGeçersizatedCallback veya DataSource.add InvalidatedCallback artık şu durumlarda otomatik olarak tetikleniyor: önceden ayarlanmış bir PagingSource / Veri Kaynağı'nda kayıtlı geçersiz. Bu da sayfa değerinin düşmesine neden olan bir yarış sorununu çözer olarak ayarlanmış bir Kaynak sağlandığında, geçersiz kılma sinyallerinin İlk yükleme sırasında zaten geçersiz. Ayrıca, artık geri çağırma işlevleri, tetiklendikten sonra en fazla bir kez aranacağı garanti edilir. (I27e69)
  • Yeni oluşturulan PagedList akışından yer tutucu başlangıç değerini (InitialPagedList) gönderme, ör. LivePagedListBuilder veya RxPagedListBuilder, artık önceden yüklenmiş verileri temizlemeyecek.

Sürüm 3.1.0-alpha02

1 Temmuz 2021

androidx.paging:paging-*:3.1.0-alpha02 yayınlandı. 3.1.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • onPagesServeed dinleyici ve akış sunucusu API'leri eklendi Bunlar, kullanıcı arayüzünde sunulan sayfalar güncellendikten hemen sonra tetiklenir.

    Bu güncellemeler kullanıcı arayüzü ile eşzamanlı olduğundan bağdaştırıcı yöntemlerini çağırabilirsiniz. (ör. .snapshot, .getItemCount gibi) güncelleme uygulandı. .snapshot() işlevinin her güncellemede yapılması pahalı olabileceğinden açıkça çağrılır.

    Sayfa güncellemeleri aşağıdaki senaryolarda gerçekleşebilir:

    • Yeni nesil PagingData'nın ilk yüklemesi tamamlanır. yeni nesilde içerikte herhangi bir değişiklik olup olmadığına bakılmadan sunum yapılacak öğeler. ör. İlk yüklemeyi tamamlayan yeni nesil herhangi bir güncelleme yok. Çünkü liste bire bir aynı bu geri çağırmayı tetikleyin.
    • Eklenen sayfa yeni bir sayfa içermese bile sayfa ekleniyor öğe
    • Bir sayfa, boş olsa bile atlanıyor (I272c9, b/189999634)

Hata Düzeltmeleri

  • Oluşturulan ilk değerden PagedList.dataSource'a erişme LivePagedList veya RxPagedList tarafından yanlış bir şekilde Yasadışı Durum İstisnası (I96707)

Sürüm 3.1.0-alpha01

2 Haziran 2021

androidx.paging:paging-*:3.1.0-alpha01 yayınlandı. Sürüm 3.1.0-alpha01 bu kaydetmeleri içerir.

API Değişiklikleri

  • paging-rxjava3 tarafından sağlanan sınıflar artık ile çakışmamaları için androidx.paging.rxjava3 paketi paging-rxjava2 (Ifa7f6)

Hata Düzeltmeleri

  • Sayfalandırmanın bazen işlem yok farklılığı göndermesine neden olan sorun düzeltildi etkinlikleri RecyclerView'a gönderir. Bu işlem, belirli dinleyicilerin gerekiyor. (Ic507f, b/182510751)

Harici Katkı

  • rxjava3 yapısına desteği sonlandırılan PagedList uyumlu API'ler eklendi (Id1ce2, b/182497591)

Sayfa Oluşturma Sürüm 1.0.0

Sürüm 1.0.0-alpha20

24 Mayıs 2023

androidx.paging:paging-compose:1.0.0-alpha20 yayınlandı. 1.0.0-alpha20 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Oluşturma sayfasında artık bir PagingData.from(fakeData) oluşturup bu PagingData öğesini bir MutableStateFlow (ör. MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) bilgileri gösterilir. Bu verileri @Preview girdisi olarak kullandığınızda, collectAsLazyPagingItems() için yapılan çağrılar önizlenebilir LazyPagingItems sağlar. (I8a78d, b/194544557)

Hata Düzeltmeleri

  • LazyPagingItems ürününde toplanan pager.flow.cachedIn önbelleğine alınmış veriler, artık durum geri yüklendikten sonra eşzamansız toplama gerekmeksizin kullanılabilir hale gelecektir. Bu, durum geri yüklendikten sonra, önbelleğe alınan verilerin ilk bestenin hemen ardından sunuma hazır olacağı anlamına gelir. (I97a60, b/177245496)

Sürüm 1.0.0-alpha19

3 Mayıs 2023

androidx.paging:paging-compose:1.0.0-alpha19 yayınlandı. Sürüm 1.0.0-alpha19 bu kaydetmeleri içerir.

Tüm geç düzenleri destekleme

Yazma Sihirbazı, daha önce LazyListScope tarihinde özel items ve itemsIndexed uzantılarını sağlıyordu. Yani, Sayfa Yazma Sihirbazı'nı LazyVerticalGrid, HorizontalPager gibi diğer geç düzenlere veya Wear ve TV kitaplıklarının sağladığı diğer özel geçki bileşenlerle kullanamazsınız. Bu sürümde yapılan temel güncelleme, bu esnekliksizliği ortadan kaldırmaktır.

Daha geç düzeni desteklemek için API'leri farklı bir katmanda oluşturmamız gerekiyordu. Her geç düzen için özel bir items API sağlamak yerine, Sayfa Oluşturma mesajı, itemKey ve itemContentType için LazyPagingItems için biraz daha düşük düzeyli uzantı yöntemleri sunuyor. Bu API'ler, key ve contentType parametrelerini LazyColumn ve LazyVerticalGrid için zaten mevcut olan standart items API'lere ve HorizontalPager gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olmaya odaklanır. (Ifa13b, Ib04f0, b/259385813)

LazyVerticalGrid için destek şu şekilde olacaktır:

// This part is unchanged
val lazyPagingItems = pager.collectAsLazyPagingItems()

LazyVerticalGrid(columns = GridCells.Fixed(2)) {
  // Here we use the standard items API
  items(
    count = lazyPagingItems.itemCount,
    // Here we use the new itemKey extension on LazyPagingItems to
    // handle placeholders automatically, ensuring you only need to provide
    // keys for real items
    key = lazyPagingItems.itemKey { it.uniqueId },
    // Similarly, itemContentType lets you set a custom content type for each item
    contentType = lazyPagingItems.itemContentType { "contentType" }
  ) { index ->
    // As the standard items call provides only the index, we get the item
    // directly from our lazyPagingItems
    val item = lazyPagingItems[index]
    PagingItem(item = item)
  }
}

Bu yeni API'lerin kullanımıyla ilgili daha fazla örnek için lütfen örneklerimize göz atın.

Bu değişiklikler LazyColumn ve LazyRow örneklerini birkaç satır uzatsa da, tüm geç düzenlerdeki tutarlılığın, Sayfa Oluşturma Oluşturma özelliğini kullananlar için önemli bir faktör olduğunu hissettik. Bu nedenle, mevcut LazyListScope uzantıları kullanımdan kaldırılmıştır. (I0c459, I92c8f, b/276989796)

API Değişiklikleri

  • Yeni API'lere geçişi kolaylaştırmak için LazyListScope üzerindeki items ve itemsIndexed uzantısı artık yeni API'lerdeki desteği yansıtan contentType parametresini desteklemektedir. (Ib1918, b/255283378)

Bağımlılık Güncellemeleri

  • Compose'da, Compose 1.0.5 olan bağımlılığı Compose 1.2.1 olarak güncellendi. (Ib1918, b/255283378)

Sürüm 1.0.0-alpha18

8 Şubat 2023

androidx.paging:paging-compose:1.0.0-alpha18 hiçbir değişiklik yapılmadan yayınlandı. 1.0.0-alpha18 sürümü bu kaydetmeleri içerir.

Sürüm 1.0.0-alpha17

24 Ekim 2022

androidx.paging:paging-compose:1.0.0-alpha17 yayınlandı. 1.0.0-alpha17 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

Sürüm 1.0.0-alpha16

10 Ağustos 2022

androidx.paging:paging-compose:1.0.0-alpha16 yayınlandı. 1.0.0-alpha16 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Sayfalandırma, artık PagingData'dan toplanan hata ayıklama bilgilerini açığa çıkarmak için LazyPagingItems sınıfı aracılığıyla günlükleri sağlamaktadır.
  • Günlükler, adb shell adb shell setprop log.tag.Paging [DEBUG|VERBOSE] komutuyla etkinleştirilebilir. ([b/235527159}(https://issuestracker.google.com/issues/235527159))

Hata Düzeltmeleri

  • paging-common:3.1.1 veya daha eski bir sürümle paging-compose:1.0.0-alpha15 kullanılırken oluşan eksik PagingDataDiffer oluşturucu hatası düzeltildi.(b/235256201,b/239868768)

Sürüm 1.0.0-alpha15

1 Haziran 2022

androidx.paging:paging-compose:1.0.0-alpha15 yayınlandı. 1.0.0-alpha15 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • PagingDataAdapter ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden kurucular eklendi. (Idc878)

Hata Düzeltmeleri

  • LazyPagingItems, ilk loadState değerini LoadState.Loading yenilemesi olarak ayarlıyor. (I55043, b/224855902)

Sürüm 1.0.0-alpha14

13 Ekim 2021

androidx.paging:paging-compose:1.0.0-alpha14 yayınlandı. 1.0.0-alpha14 sürümü bu kaydetmeleri içerir.

Sürüm 1.0.0-alpha13

29 Eylül 2021

androidx.paging:paging-compose:1.0.0-alpha13 yayınlandı. 1.0.0-alpha13 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • LazyPagingItems.snapshot() işlevi, LazyPagingItems.itemSnapshotList özelliğiyle değiştirildi (Ie2da8)
  • Desteği sonlandırılmış LazyPagingItems.getAsState() kaldırıldı (Ie65e4)

Sürüm 1.0.0-alpha12

21 Temmuz 2021

androidx.paging:paging-compose:1.0.0-alpha12 yayınlandı. 1.0.0-alpha12 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Sayfalandırmayı LazyColumn/Row ile bağlamak için kullanılan items(lazyPagingItems) ve itemsIndexed(lazyPagingItems) artık öğeyi temsil eden sabit bir anahtar belirtmenize olanak tanıyan seçenek anahtarı parametresini kabul ediyor. Anahtarlar hakkında daha fazla bilgiye buradan ulaşabilirsiniz. (I7986d)
  • lazyPagingItems.getAsState(index) işlevinin desteği sonlandırıldı. Bunun 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 kaydetmeleri içerir.

Sürüm 1.0.0-alpha10

2 Haziran 2021

androidx.paging:paging-compose:1.0.0-alpha10 yayınlandı. 1.0.0-alpha10 sürümü bu kaydetmeleri içerir.

Sürüm 1.0.0-alpha09

18 Mayıs 2021

androidx.paging:paging-compose:1.0.0-alpha09 yayınlandı. Sürüm 1.0.0-alpha09 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • LazyPagingItems itemCount ve öğe alıcısı artık LazyVerticalGrid ile de kullanılabileceğinden gözlemlenebilir (Ie2446, b/171872064, b/168285687).

Oluşturma Uyumluluğu

  • androidx.paging:paging-compose:1.0.0-alpha09 yalnızca Compose 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 kaydetmeleri içerir.

Compose 1.0.0-beta01 ile entegre olacak şekilde güncellendi.

Sürüm 1.0.0-alpha07

10 Şubat 2021

androidx.paging:paging-compose:1.0.0-alpha07 yayınlandı. 1.0.0-alpha07 sürümü bu kaydetmeleri içerir.

Compose'un alfa12 sürümüyle entegre olacak şekilde güncellendi.

Sürüm 1.0.0-alpha06

28 Ocak 2021

androidx.paging:paging-compose:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

Oluşturma 1.0.0-alpha11 sürümüne bağlı olacak şekilde güncellendi.

Sürüm 1.0.0-alpha05

13 Ocak 2021

androidx.paging:paging-compose:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu kaydetmeleri içerir.

Oluşturma 1.0.0-alpha10 sürümüne bağlı olacak şekilde güncellendi.

Sürüm 1.0.0-alpha04

16 Aralık 2020

androidx.paging:paging-compose:1.0.0-alpha04 yayınlandı. 1.0.0-alpha04 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Kolaylık özellikleri güncellendi, CombinedLoadStates.refresh, CombinedLoadStates.prepend, Yalnızca Loading - NotLoading arası geçiş için CombinedLoadStates.append hem aracı hem de kaynak yükleme durumlarından sonra NotLoading durumundan sonra uzaktan güncelleme uygulandı. (I65619)

Sürüm 1.0.0-alpha03

2 Aralık 2020

androidx.paging:paging-compose:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü bu kaydetmeleri içerir.

  • Oluştur 1.0.0-alpha08 ile eşleşecek şekilde güncellendi.

Sürüm 1.0.0-alpha02

11 Kasım 2020

androidx.paging:paging-compose:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • .peek(), .snapshot(), .retry() ve .refresh() yöntemleri eklendi Aynı işlevleri sunan LazyPagingItem AsyncPagingDataDiffer / PagingDataAdapter (Iddfe8, b/172041660)

Sürüm 1.0.0-alpha01

28 Ekim 2020

androidx.paging:paging-compose:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

paging-compose yapısı, Sayfalama Kitaplığı ile Jetpack Compose arasında entegrasyon sağlar. Basit bir kullanım örneği:

  @Composable
  @OptIn(ExperimentalLazyDsl::class)
  fun ItemsDemo(flow: Flow<PagingData<String>>) {
      val lazyPagingItems = flow.collectAsLazyPagingItems()
      LazyColumn {
          items(lazyPagingItems) {
              Text("Item is $it")
          }
      }
  }

Sürüm 3.0.1

Sürüm 3.0.1

21 Temmuz 2021

androidx.paging:paging-*:3.0.1 yayınlandı. Sürüm 3.0.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • LivePagedList veya RxPagedList tarafından oluşturulan ilk değerden PagedList.dataSource erişimi artık yanlış bir şekilde Yasadışı Durum İstisnası (I96707) hatasına yol açmayacaktır

Sürüm 3.0.0

Sürüm 3.0.0

5 Mayıs 2021

androidx.paging:paging-*:3.0.0 yayınlandı. 3.0.0 sürümü bu kaydetmeleri içerir.

3.0.0'ın temel özellikleri

Paging 2.x.x'teki mevcut API'nin çoğu, aşağıdaki iyileştirmeleri sağlamak üzere yeni Paging 3 API'lerinin yerini alacak şekilde kullanımdan kaldırılmıştır:

  • Kotlin eş yordamları ve Akışı için birinci sınıf destek
  • İptal desteği
  • Yerleşik yükleme durumu ve hata sinyalleri
  • Yeniden dene + yenileme işlevi
  • Üç DataSource alt sınıfının tamamı, birleştirilmiş bir PagingSource sınıfında birleştirildi
  • Ayırıcı eklemek için yerleşik bir dönüşüm dahil olmak üzere özel sayfa dönüşümleri
  • Yükleme durumu üstbilgileri ve altbilgileri

Sürüm 3.0.0-rc01

21 Nisan 2021

androidx.paging:paging-*:3.0.0-rc01 yayınlandı. Sürüm 3.0.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Sayfalandırmanın bazen işlem yok farklılığı göndermesine neden olan sorun düzeltildi etkinlikleri RecyclerView'a gönderir. Bu işlem, belirli dinleyicilerin gerekiyor. (Ic507f, b/182510751)

Sürüm 3.0.0-beta03

24 Mart 2021

androidx.paging:paging-*:3.0.0-beta03 yayınlandı. Sürüm 3.0.0-beta03 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Listeyi seçtiğinizde yer tutucuların beklenmedik atlamaları önlemek için yeniden yüklendi. Görüntüleyin Ayrıntılı bilgi için NullPaddedDiffing.md adresini ziyaret edin. (If1490, b/170027529, b/177338149)
  • Çeşitli PagedList derleyicileri (eski uyumluluk yolu) artık .build() çağrıldığında, ana iş parçacığında DataSource.Factory.create() işlemini yanlış şekilde eşzamanlı olarak çağırmamaktadır. (b/182798948)

Sürüm 3.0.0-beta02

10 Mart 2021

androidx.paging:paging-*:3.0.0-beta02 yayınlandı. Sürüm 3.0.0-beta02 bu kaydetmeleri içerir.

API Değişiklikleri

  • Rx3 uzantıları artık doğru şekilde yayılıyor @ExperimentalCoroutinesApi Etkinleştirme şartı. Önceden bunlar @get yönteminde işaretlendi. Bu işlem, Kotlin Derleyici tarafından yoksayılıyor. https://youtrack.jetbrains.com/issues/KT-45227 (I5733c)

Hata Düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımıyla ilgili kısıtlamaları zorunlu kılın (I6aa29, b/174531520)
  • Şu durumlarda PagingState öğesinin her zaman null olmasına neden olan bir hata düzeltildi: uzaktan yenileme özelliği çağrılır.
  • PagingSource tarafından döndürülen boş sayfaların, Paging'in prefetchDistance yerine getirmek için tekrar getirmesini engelleyebileceği ve bu nedenle Paging'in "takılması" hatası düzeltildi.

Sürüm 3.0.0-beta01

10 Şubat 2021

androidx.paging:paging-*:3.0.0-beta01 yayınlandı. Sürüm 3.0.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • Rx2 ve Rx3 sarmalayıcıları artık deneysel ek açıklamayı duruma göre değişir. paging-rxjava2 veya paging-rxjava3 ise artık kullanımlara @OptIn(ExperimentalCoroutinesApi::class) (Ib1f9d)

Hata Düzeltmeleri

  • Uyumluluk yollarıyla v2 DataSource API'leri kullanılırken IndexOutOfBoundsException: Inconsistency detected öğesinin bazen kilitlenmesi sorunu düzeltildi
  • Uyumluluk yolları aracılığıyla kullanıldığında, DataSource başlatılırken isInvalid çağrısı artık ana iş parçacığı yerine fetchDispatcher'da başlatılmaktadır. Bu sorun, Odanın PagingSource uygulaması kullanılırken ana iş parçacığında Db erişiminden kaynaklanan 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 kaydetmeleri içerir.

API Değişiklikleri

  • PagingSource.getRefreshKey uygulamasının uygulanması isteğe bağlı değildir. artık varsayılan uygulaması olmayan soyut bir işleve dönüştü. Taşınan kullanıcılar, varsayılan değerleri döndürmeye devam edebilir ise şunu döndürür: null, ancak getRefreshKey() kullanıcının isteklerine göre bir anahtar döndüren gerçek bir uygulama Sayfalamanın yüklemeye devam etmesine izin veren geçerli kaydırma konumu PagingState.anchorPosition aracılığıyla görüntü alanının çevresinde ortalanır yapmasını sağlar. (I4339a)
  • InvalidatingPagingSourceFactory, artık nihai sınıf (Ia3b0a)
  • Terminal ayırıcısının (başlık / alt bilgi) yapılandırılmasına izin ver ek bir isteğe bağlı SeparatorType parametresiyle İkisi şunlardır:
    • FULLY_COMPLETE - mevcut davranış; hem PagingSource hem de RemoteMediator, terminal eklemeden önce endOfPaginationReached'i işaretleyecek kullanabilirsiniz. RemoteMediator kullanılmazsa, uzak loadState yoksayıldı. Bu, özellikle yalnızca belirli bir bölümün veya oyununuzun ayırıcılar, bölüm tam olarak yüklendiğinden uzak kaynak, ör. ağ.
    • SOURCE_COMPLETE - yalnızca PagingSource'un işaretlemesini bekleyin RemoteMediator kullanılsa bile endOfPaginationReached. Bu da ilk başta eşzamanlı olarak sunulacak olan Bu, kullanıcıların terminali görmek için sayfayı kaydırmak zorunda kalmalarını önler kullanabilirsiniz. (Ibe993, b/174700218)

Hata Düzeltmeleri

  • PagingSource aşağıdaki durumlarda ortaya çıkan nadir bellek sızıntısı düzeltildi: başlamadan önce geçersiz kılınır. (I9606b, b/174625633)

Sürüm 3.0.0-alpha12

13 Ocak 2021

androidx.paging:paging-*:3.0.0-alpha12 yayınlandı. Sürüm 3.0.0-alpha12 bu kaydetmeleri içerir.

API Değişiklikleri

  • InvalidatingPagingSourceFactory artık soyut bir sınıf değil çünkü hiçbir zaman soyut yöntemleri yoktu. (I4a8c4)
  • ViewModel'i kabul eden bir aşırı .cachedIn() yüklemesi eklendi yerine (I97d81, b/175332619)
  • Java arayanlarının PagingData dönüştürme işlemlerini kullanmasına izin ver: Yürütücüyü, dönüşüm operatörü olarak kabul ederek eş zamansız bir şekilde bağımsız değişkenlerdir. Tüm -Sync dönüştürme operatörleri -Sync son ekine sahiptir ve Kotlin eş yordam kullanıcılarının bunun yerine askıya alma engellemesini kabul eden uzantı işlevi çağrılır. Tüm PagingData dönüştürme operatörleri uzantılara taşındı altında, statik PagingDataTransforms sınıfının altında bulunabilir. Java kullanıcılarının bunları statik yardımcılarla (ör. PagingDataTransforms.map(pagingData, transform). Kotlin kullanıcıları için söz dizimi aynıdır ancak işlevini kullanın. (If6885, b/172895919)

Hata Düzeltmeleri

  • Sayfalara ayırmanın sonuna ulaşılmışsa adapter.refresh() sırasında RemoteMediator.load() işlevinin çağrılmamasına neden olan hata düzeltildi.

Sürüm 3.0.0-alpha11

16 Aralık 2020

androidx.paging:paging-*:3.0.0-alpha11 yayınlandı. Sürüm 3.0.0-alpha11 bu kaydetmeleri içerir.

Yeni Özellikler

  • Aşağıdaki temel kullanım alanları için kaydedilen durum desteği eklendi (özellikle katmanlı kaynak durumunda tam destek hâlâ devam etmektedir):
    • akışı önbelleğe alınır ve uygulama sonlandırılmaz (ör. akış bir görünüm modelinde önbelleğe alınır ve etkinlik, işlemde yeniden oluşturulur)
    • sayfalama kaynağı sayılır, yer tutucular etkinleştirilir ve düzen en iyi uygulamaları paylaşacağız.

API Değişiklikleri

  • PagingSource.getRefreshKey() artık kararlı bir API (I22f6f, b/173530980) olarak değişti
  • PagingSource.invalidate artık açık bir işlev değil. Şu durumda: Geçersiz kılma gerçekleştiğinde bildirim almanız gerekiyorsa, "Geçersiz kılma" yöntemini geçersiz kılmayı tercih edebilirsiniz. (I628d9, b/173029013, b/137971356)
  • Pager artık Google Analytics 4'e deneysel API'leri sızdırmak yerine etkinleştirme ek açıklaması aracılığıyla deneysel olmayan, herkese açık API'yi kullanabilirsiniz. (I9dc61, b/174531520)
  • Kolaylık özellikleri güncellendi, CombinedLoadStates.refresh, CombinedLoadStates.prepend, Yalnızca Loading - NotLoading arası geçiş için CombinedLoadStates.append hem aracı hem de kaynak yükleme durumlarından sonra NotLoading durumundan sonra uzaktan güncelleme uygulandı. (I65619)
  • LoadParams.pageSize kaldırıldı (zaten desteği sonlandırıldı). Öneri, PagingSource'unuzda LoadParams.loadSize kullanmanızdır.

    LoadParams.loadSize her zaman PagingConfig.pageSize değerine eşittir ilk yükleme çağrısı dışında, PagingConfig.initialLoadSize.

    Paging2 DataSource'unuzu bir Çağrı Cihazı ya da PagedList, pageSize ile eşleşmeyebilir; PagingConfig.pageSize initialLoadSize ayarını da yapıyorsunuz. Bu, işletmeniz için önemliyse test etmek istiyorsanız bunun yerine dahili olarak ayarlanacak bir Pager/PagedList kullanmayı deneyin DataSource yükleme yöntemleriniz için doğru PageSize değerini yüklemelisiniz. (I98ac7, b/149157296)

Hata Düzeltmeleri

  • Şu durumlarda LegalStateException hatasından kaynaklanan bir kilitlenme düzeltildi kullanmanızı öneririz. (I0ed33, b/174787528)
  • BAŞA EKLEYİN / UYGULAMAYA ULAŞIN için yükleme durumunun gösterilmemesine neden olan hata düzeltildi hemen NotLoading(endOfPaginationReached = true) olarak güncelle RemoteMediator ayarlanmışsa ilk yüklemeden sonra (I8cf5a)
  • .snapshot(), .peek() vb. sunucu tarafı API'lerinin, ListUpdateCallback güncellemelerinde önceki (güncel olmayan) listeyi döndürmesine neden olan hata düzeltildi.
  • Ayırıcı operatörlerinin RemoteMediator ile kullanıldığında üst veya alt bilgi eklememesine neden olan hata düzeltildi
  • LoadState için NotLoading for RemoteMediator güncellemelerinin Yükleme durumunda kalmasına neden olan hata düzeltildi
  • Paging2.0 uyumluluk API'sinin (.asPagingSourceFactory()) yanlış CoroutineDispatcher'da yedekleme DataSource başlatmasına neden olabileceği bir hata düzeltildi. Bu sayede, özellikle Room'da bu uyumluluk yolunu kullanan PagingSource'un kullanıldığı mevcut bir uygulama kullanılırken kilitlenme ve olası ANR durumları çözülür.

Sürüm 3.0.0-alpha10

2 Aralık 2020

androidx.paging:paging-*:3.0.0-alpha10 yayınlandı. Sürüm 3.0.0-alpha10 bu kaydetmeleri içerir.

API Değişiklikleri

  • Kullanımdan kaldırılan dataRefreshFlow ve dataRefreshListener API'leri kaldırıldı çünkü loadStateFlow / İşleyici güncellemeleriyle gereksiz hale gelir. Örneğin, ise loadStateFlow eşdeğeri şu şekildedir:

    loadStateFlow.distinctUntilChangedBy { it.refresh }
        .filter { it.refresh is NotLoading }
    

    (Ib5570, b/173530908)

Hata Düzeltmeleri

  • REFRESH RemoteMediator için endOfPaginationReached LoadState güncellemelerine doğru bir şekilde yayılır ve uzaktan APPEND ve PREPEND tetiklenmez. (I94a3f, b/155290248)
  • Başlangıç sayfasının boş olması veya yoğun filtreleme, Sayfalama'nın PREPEND başlamasını artık engellemeyecek veya APPEND yükleme. (I3e702, b/168169730)
  • getRefreshKey adlı kullanıcının çağrılmamasına neden olan sorun düzeltildi PagingSource'un yeni nesillere dayanmasını sağlar. (I45460, b/170027530)

Harici Katkı

  • Yeni bir soyut sınıf InvalidatingPagingSourceFactory eklendi geçersiz kılmayı tüm PagingSources'a yönlendiren bir .invalidate() API ile için çok iyi bir seçim. @claraf3 adlı kullanıcıya teşekkürler! (Ie71fc, b/160716447)

Bilinen Sorunlar

  • RemoteMediator b/172254056 kullanılırken, .insertSeparators() dönüşümündeki üstbilgi ve altbilgiler hemen görünmeyebilir.
  • RemoteMediator'ın kullanılması, geçersiz kılma işleminin ve PagingSource.load(LoadParams.Refresh(...)) RemoteMediator.load() b/173717820 döndürülmeden önce tamamlanırsa uzaktan LoadState ürününün takılmasına neden olabilir

Sürüm 3.0.0-alpha09

11 Kasım 2020

androidx.paging:paging-*:3.0.0-alpha09 yayınlandı. Sürüm 3.0.0-alpha09 bu kaydetmeleri içerir.

API Değişiklikleri

  • dataRefreshFlow / İşleyici yöntemlerini changeWith yan tümcesi. (I6e2dd)

Hata Düzeltmeleri

  • RemoteMediator ile ayırıcılar kullanılırken IllegalArgumentException işlevinin atılması ve endOfPagination değerini döndürecek bir uzaktan yükleme hâlâ çalışırken bir geçersiz kılma tetikleniyor (I3a260)

Sürüm 3.0.0-alpha08

28 Ekim 2020

androidx.paging:paging-*:3.0.0-alpha08 yayınlandı. 3.0.0-alpha08 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • DataSource.InvalidatedCallback için Kotlin / Java varyantları işlevsel aracılığıyla Kotlin'de SAM dönüşümleri etkinleştirilerek birleştirildi. arayüzü (Kotlin 1.4'te mevcuttur). Bu işlem, Geçersiz kılma geri çağırmalarının kotlin varyantı dönüştürüldükten sonra çağrılmadı .map veya .mapByPage tarafından. (I1f244, b/165313046)

Hata Düzeltmeleri

  • Paging'in ViewPager ile etkileşimi önemli ölçüde iyileştirildi. Daha net bir ifadeyle, Sayfalama, bir sayfanın geçersiz kılınması nedeniyle artık RemoteMediator#load çağrısını iptal etmeyecek. Ayrıca, YENİLEME gerekiyorsa YENİLEME isteği başarıyla tamamlanana kadar ekleme/başa ekleme isteği göndermez. (I6390b, b/162252536)
  • androidx için kayıpGetterMatchingBuilder API lint kontrolü etkin (I4bbea, b/138602561)
  • .withLoadState* ConcatAdapter yardımcısının şunları yapacağı bir hata düzeltildi: RecyclerView'un arka plan iş parçacığından (I18bb5, b/170988309) bildirilmesi nedeniyle oluşan kilitlenme
  • Çok küçük ve boş olmayan bir sayfa yüklemenin bazen önceden getirmenin yüklemeleri doğru şekilde tetiklemesini engellemesine neden olan hata düzeltildi.Iffda3 b/169259468

Sürüm 3.0.0-alpha07

1 Ekim 2020

androidx.paging:paging-*:3.0.0-alpha07 yayınlandı. 3.0.0-alpha07 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Eş zamansız PagingData Guava tabanlı operatörler artık bir Yürütücü kabul ediyor parametre olarak kullanabilirsiniz. (Id4372)

Hata Düzeltmeleri

  • Nedeniyle RemoteMediator'da IndexOutOfBounds istisnası atıldı bir yarış koşuluna dönüşebilir. (I00b7f, b/165821814)
  • DataSource'ta bir yarış durumu düzeltildi -> PagingSource'un, DataSource'tan gelen geçersiz kılma sinyallerini yoksaymasına neden olabilecek PagingSource dönüşümü.
  • Sayfa getirme mantığındaki bir sorun düzeltildi. Bu sorun bazen PagingDataAdapter.refresh() çağrılana kadar yeni nesil PagingSource'u alamamasına neden oluyordu.
  • RemoteMediator ile birlikte, PagingSource'a dönüştürülmüş bir DataSource (Oda tarafından üretilen kaynak gibi) kullanılırken kaydırma konumunun kaybolmasına neden olan bir sorun düzeltildi

Harici Katkı

  • PagingData için RxJava2, RxJava3 ve Guava tabanlı eşzamansız dönüştürme operatörlerini eklediği için @simonschiller'a teşekkür ederiz.

Sürüm 3.0.0-alpha06

2 Eylül 2020

androidx.paging:paging-*:3.0.0-alpha06 yayınlandı. 3.0.0-alpha06 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • UnsupportedOperationException ve daha net mesajlar sabit kimliklere yönelik destek eksikliği ortaya çıkmıştır. PagingDataAdapter.setHasStableIds çağrıldı. (Ib3890, b/158801427)

Hata Düzeltmeleri

  • InsertSeparators artık boş sayfaları filtreleyerek hariç tutma önceden getirme mesafesine dikkat etmelisiniz. Örneğin, birçok boş sayfa eklenir. (I9cff6, b/162538908)

Sürüm 3.0.0-alpha05

19 Ağustos 2020

androidx.paging:paging-*:3.0.0-alpha05 yayınlandı. 3.0.0-alpha05 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Sayfalama, sunulan veriler yoğun bir şekilde filtrelendiğinde bile sayfaları artık doğru şekilde önceden getiriyor
  • LoadResult.Error, yeniden denenen yükleme durumuna döndürüldüğünde artık öğe erişimlerinin yanlış şekilde yeniden tetiklemeyle yeniden tetiklenmesine neden olmuyor

Harici Katkı

  • Bazı testlerin tamamlanmasına yardımcı olduğu için Clara F'ye teşekkürler! (549612)

Sürüm 3.0.0-alpha04

5 Ağustos 2020

androidx.paging:paging-*:3.0.0-alpha04 yayınlandı. 3.0.0-alpha04 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • peek() API'si AsyncPagingDataDiffer API'sine eklendi ve Tetikleyici sayfası olmadan sunulan veri erişimine izin vermek için PagingDataAdapter yükler. (I38898, b/159104197)
  • PagingDataAdapter için snapshot() API ve Sunulan öğelerin alınmadan alınmasına izin vermek için AsyncPagingDataDiffer sayfa getirmeyi tetikliyor. (I566b6, b/159104197)
  • İzin verilecek bir PagingData.from(List<T>) oluşturucu eklendi statik listeler sunar. Bu listeler, Belirli durumlarda (ör. veya yalnızca dönüşümleri test etmek için REFRESH (yenileme) biter. (Id134d)
  • dataRefresh Flow / Dinner API'leri (olduğu gibi) kullanımdan kaldırın sunulan öğelerin REFRESH'te gösterilmesi amaçlanmıştır ancak loadState Akışı / İşleyici geri çağırma zamanlaması ve itemCount özelliğinde yapılan iyileştirmeler sayesinde bu gereksizdir (Ia19f3)
  • PagingSource ve RemoteMediator için RxJava3 uyumluluk sarmalayıcıları eklendi (I49ef3, b/161480176)

Hata Düzeltmeleri

  • PositionalDataSource, şu yolla PagingSource haline dönüştürüldü: Oda tarafından oluşturulan PagingSource dahil toPagingSourceFactory yardımcı atlamayı desteklemek için kendilerini doğru şekilde işaretleyebilirler. (I3e84c, b/162161201)
  • submitData öğesinin eşzamanlı varyantının kullanılmasına neden olan bir hata düzeltildi bazen ClosedSendChannelException (I4d702, b/160192222) ile sonuçlanan bir yarışa neden olur

Harici Katkı

  • Slack adına RxJava3 uyumluluk sarmalayıcıları eklediği için Zac Sweers'a teşekkür ederiz. (I49ef3, b/161480176)

Sürüm 3.0.0-alpha03

22 Temmuz 2020

androidx.paging:paging-*:3.0.0-alpha03 yayınlandı. Sürüm 3.0.0-alpha03 bu kaydetmeleri içerir.

API Değişiklikleri

  • PagingState kurucusu artık herkese açık olduğu için getRefreshKey() uygulamalarının test edilmesini daha kolay hale getirecektir (I8bf15)
  • Java'dan DataSource kotlin haritası işlevi varyantları gizlendi orijinal ve kotlin varyantları arasındaki belirsizliği giderir. (If7b23, b/161150011)
  • Kotlin kullanıcılarına kolaylık sağlamak için tasarlanmış gereksiz API'ler @JvmSynthetic (I56ae5) olarak işaretlendi
  • LoadResult.Page kurucusu için aşırı yüklemeler eklendi hangi itemsBefore ve itemsAfter için COUNT_UNDEFINED varsayılanı (I47849) varsayılan olarak belirler.
  • Mevcut PagingData operatörlerinin askıya alma yöntemlerini kabul etmesini sağladı ve yeni MapSync,Flat MapSync ve filterSync askıya alma işlemi özelliklerini kullanıma sunduk işlecini kullanır. Mevcut dönüştürme yöntemleri uzantı işlevlerine taşındığından Kotlin kullanıcılarının artık bunları içe aktarması gerekecek. (I34239, b/159983232)

Hata Düzeltmeleri

  • Oda (ve PositionalDataSource) PagingSource'ları ilk sayfanın parçası olarak başında bir ayırıcı görüntüler, böylece kullanıcı bunun için sayfayı kaydırması gerekmez. (I6f747, b/160257628)
  • Artık yer tutucularda öğe erişimleri PagingSource yüklemelerini doğru bir şekilde tetikleyin. istenen dizini karşılayan bir sayfa döndürüldü PagingData.filter() (I95625, b/158763195) tarafından dönüştürüldükten sonra
  • Sonra bazen sayfayı kaydıran bir hata için düzeltme PagingSource, PagingDataAdapter.retry() işlevini engelleyebilecek bir hata döndürüyor engelleyebilir. (I1084f, b/160194384)
  • Bir sayfa kaldırıldıktan sonra öğeye erişilmesine neden olan sorunu giderir. öğe erişimi prefetchReach kapsamında olmasına rağmen sayfaları yüklememelidir (Ie95ae, b/160038730)
  • PagingConfig.maxSize ayarlandığında yer tutucular artık etkinleştirilmiyor düşüş etkinliğinden sonra (I2be29, b/159667766)

Sürüm 3.0.0-alpha02

24 Haziran 2020

androidx.paging:paging-*:3.0.0-alpha02 yayınlandı. 3.0.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • PagingConfig oluşturucusu için ortak varsayılan değerlere sahip aşırı yüklemeler eklendi (I39c50, b/158576040)
  • PagingDataAdapter ve oluşturucuları için aşırı yüklemeler eklendi Ortak varsayılan değerlerle AsyncPagingDataDiffer (Ie91f5)
  • Bağdaştırıcı API'leri, dataRefreshFlow ve dataRefreshListener artık PagingData öğesinin boş olup olmadığını belirtmek için bir Boole değeri iletiyor (I6e37e, b/159054196)
  • RemoteMediator için RxJava ve Guava API'leri eklendi - RxRemoteMediator ve ListenableFutureRemoteMediator
  • Yaygın öğe erişimi için PagingState'e yardımcı olan isEmpty() ve firstItemOrNull() (I3b5b6, b/158892717) gibi yardımcılar eklendi

Hata Düzeltmeleri

  • Pager artık geçersiz PagingSource'ların yanlışlıkla yeniden kullanılmasını önlemek için PagingSource'un fabrikada yeniden kullanılıp kullanılmadığını kontrol ediyor. Bu durum, net olmayan bir hataya neden oluyor (I99809, b/158486430)
  • RemoteMediator REFRESH'ten gelen hatalar, PagingSource'un yüklenmesini artık engellemiyor (I38b1b, b/158892717)
  • submitData öğesinin askıya alınmayan sürümü, şu durumlarda birden çok PagingData cihazında eşzamanlı toplama nedeniyle artık kilitlenmeye neden olmuyor submitData askıya alınan sürümünden sonra çağrıldı. (I26358, b/158048877)
  • "çağrı cihazından iki kez toplanamaz" sorunu düzeltildi yapılandırma değişikliğinden sonra oluşabilecek istisna (I58bcc, b/158784811)

Sürüm 3.0.0-alpha01

10 Haziran 2020

androidx.paging:paging-*:3.0.0-alpha01 yayınlandı. Sürüm 3.0.0-alpha01 bu kaydetmeleri içerir.

Sayfalandırma Kitaplığı, birkaç önemli yeni özelliği etkinleştirmek için 3.0 sürümüne güncellendi.

3.0'ın Yeni Özellikleri

Bilinen Sorunlar

  • Sayfa 3 Javadocs henüz kullanılamıyor. Bu arada lütfen yukarıda bağlantısı verilen kılavuzları veya Kotlin dokümanlarını kullanın. (b/158614050)

Sürüm 2.1.2

Sürüm 2.1.2

18 Mart 2020

androidx.paging:paging:2.1.2 yayınlandı. 2.1.2 sürümü, 2.1.0'a karşı bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Geçersiz kılma sırasında bir konum dönüştürülürken nadir görülen durumlarda IndexOutOfBoundsException için düzeltme yapın.

Sürüm sorunu

  • Sayfalandırma sürümü 2.1.1, yanlış yapılandırılmış bir daldan yanlış bir şekilde yayınlandı. Bu durum, kısmen uygulanmış API'lerin ve gelecekteki bir sürümde kullanıma sunulacak işlevlerin açığa çıkmasına neden oldu.

  • Sayfa 2.1.2, ilk olarak 2.1.1 sürümünde kullanıma sunulan yükleme ortalama düzeltmesini içerir, ancak bu sefer 2.1.0 sürümünün üzerinden doğru bir şekilde seçilmiştir. Şu anda 2.1.1 kullanıyorsanız bu sürüme geçmeniz önemle tavsiye edilir.

Sürüm 2.1.1

Sürüm 2.1.1

18 Aralık 2019

androidx.paging:paging-*:2.1.1 yayınlandı. Sürüm 2.1.1 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • PositionalDataSources'tan gelen ardışık ilk yüklemeler artık yer tutucular devre dışı bırakıldığında son erişim etrafında toplanıyor

Sürüm 2.1.0

Sürüm 2.1.0

25 Ocak 2019

2.1.0-rc01 tarihinden itibaren değişiklik yapılmadan 2.1.0 sayfası serbest bırakıldı.

Sürüm 2.1.0-rc01

6 Aralık 2018

2.1.0-beta01 tarihinden itibaren değişiklik yapılmadan 2.1.0-rc01 sayfası serbest bırakıldı.

Sürüm 2.1.0-beta01

1 Kasım 2018

2.1.0-alpha01 tarihinden itibaren değişiklik yapılmadan 2.1.0-beta01 sayfası serbest bırakıldı.

Sürüm 2.1.0-alpha01

12 Ekim 2018

2.1.0-alpha01 sayfasında iki önemli eklemenin yanı sıra başka birkaç API değişikliği ve hata düzeltmesi yapıldı: Sayfa bırakma ve her yapı için KTX uzantı kitaplığı.

API Değişiklikleri

  • Bellekteki yüklenen öğelerin sayısını sınırlamak için PagedList.Config.Builder.setMaxSize() eklendi.
  • PagedList.Config.Builder için Kotlin alternatifi 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
  • PagedList değiştirilirken dinlemesi için AsyncPagedListDiffer.addPagedListListener() eklendi. b/111698609
  • Eski ve yeni listeyi geçen PagedListAdapter.onCurrentListChanged() varyant eklendi, önceki varyant desteği sonlandırıldı.
  • Farklılaştırmadan sonra, sayfalı liste gösterilirse/gösterildiğinde tetiklenen ek bir geri çağırmayı alan PagedListAdapter/AsyncPagedListDiffer.submitList() varyant eklendi. Bu, bir PagedList değişimini diğer kullanıcı arayüzü güncellemeleriyle senkronize etmenize olanak tanır. b/73781068
  • Bellekte kaç öğe olduğunu bildirmek için PagedList.getLoadedCount() eklendi. Yer tutucular devre dışı bırakılırsa döndürülen değerin her zaman .size() değerine eşit olacağını unutmayın.

Hata Düzeltmeleri

  • Listeler yeniden kullanılırsa fark uygulanırken ortaya çıkan yarış durumu düzeltildi b/111591017
  • Dizin geçersiz olduğunda PagedList.loadAround(), artık IndexOutOfBoundsException hatası veriyor. Önceden, belirsiz bir diğer istisna nedeniyle kilitleniyordu.
  • Çok küçük bir başlangıç yükleme boyutunun ve değişmeyen verilerle birlikte daha fazla yüklenmemesine neden olma durumu düzeltildi b/113122599

Sürüm 2.0.0

Sürüm 2.0.0

1 Ekim 2018

2.0.0 sayfası, tek bir hata düzeltmesiyle yayınlandı.

Hata Düzeltmeleri

  • PositionalDataSource ve yer tutucular b/114635383 kullanılarak çok hızlı kaydırma yapıldığında oluşabilecek kilitlenme düzeltildi.

Sürüm 2.0.0-beta01

2 Temmuz 2018

Hata Düzeltmeleri

  • Bazı başa ekleme durumlarında kaybolan içerik düzeltildi (yer tutucular devre dışı, PositionalDataSource) b/80149146
  • (1.0.1 sürümünde kullanıma sunuldu) PagedListAdapter ve AsyncPagedListDiffer adlı uygulamanın, taşıma etkinliklerini bildiremediği kilitlenmeler düzeltildi. b/110711937

AndroidX Öncesi Bağımlılıkları

Sayfalama'nın takip eden AndroidX öncesi sürümleri için şu bağımlılıkları dahil edin:

dependencies {
    def paging_version = "1.0.0"

    implementation "android.arch.paging:runtime:$paging_version"

    // alternatively - without Android dependencies for testing
    testImplementation "android.arch.paging:common:$paging_version"

    // optional - RxJava support
    implementation "android.arch.paging:rxjava2:$paging_version"
}

Sürüm 1.0.1

Sürüm 1.0.1

26 Haziran 2018

1.0.1 sayfası, runtime sisteminde tek bir hata düzeltmesiyle yayınlandı. Kararlılık için 1.0.1 kullanmanızı önemle tavsiye ederiz. Sayfalandırma RxJava2 1.0.1 de yayınlandı ve 1.0.0-rc1 ile aynı.

Hata Düzeltmeleri

  • PagedListAdapter ve AsyncPagedListDiffer adlı kullanıcıların, taşıma etkinliklerini işaret edemediği kilitlenmeler düzeltildi. b/110711937

RxJava2 Sürüm 1.0.0

RxJava2 Sürüm 1.0.0-rc1

16 Mayıs 2018

RxJava2 1.0.0-rc1 çağrısına göre, ilk sürümden itibaren herhangi bir değişiklik yapılmadan sürüm adayına geçiliyor alfa

Sürüm 1.0.0

Sürüm 1.0.0-rc1

19 Nisan 2018 Sayfalama Sürüm Adayı

1.0.0 sürümünde notlandırma. 1.0.0-rc1 ve savaşı test etmemize yardım edin. Böylece sağlam bir 1.0.0 gönderebiliriz.

Bu sürümde değişiklik yoktur. 1.0.0-beta1 ile aynı.

Sürüm 1.0.0-beta1

5 Nisan 2018

Sayfalama, adayı serbest bırakmaya geçmeden önce kısa bir süre için beta sürümünde olacaktır. Paging 1.0 için daha fazla API değişikliği planlamıyoruz ve API değişiklikleri için çıta çok yüksek.

Sayfalandırma için Alpha RxJava2 desteği isteğe bağlı ayrı bir modül olarak kullanıma sunuldu (android.arch.paging:rxjava2:1.0.0-alpha1) ve stabil hale gelene kadar geçici olarak ayrı bir sürüm hazırlanacaktır.

Bu yeni kitaplık, LivePagedListBuilder işlevine örnek olarak Executor yerine Scheduler saniye süren Observable ve Flowable:

Kotlin

val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50)
        .setFetchScheduler(myNetworkScheduler)
        .buildObservable()

Java

Observable<PagedList<Item>> pagedItems =
        RxPagedListBuilder(myDataSource, /* page size */ 50)
                .setFetchScheduler(myNetworkScheduler)
                .buildObservable();

Yeni Özellikler

  • RxPagedListBuilder, yeni android.arch.paging:rxjava2 yapısıyla eklendi.

API Değişiklikleri

  • Yürütücülerin derleyicilerdeki rolünü netleştirmek için yapılan API değişiklikleri:

    • setBackgroundThreadExecutor() adlı dosya setFetchExecutor() olarak yeniden adlandırıldı (PagedList.Builder ve LivePagedListBuilder içinde)

    • setMainThreadExecutor() adlı dosya setNotifyExecutor() olarak yeniden adlandırıldı (PagedList.Builder klasöründe).

  • PagedList.mCallbacks üyenin gizli olduğu düzeltildi.

Hata Düzeltmeleri

  • LivePagedListBuilder, belirtilen yürütücüde ilk PagedList yüklemesini tetikler. tercih edebilirsiniz.

  • Dahili DataSource sarmalayıcılarındaki geçersiz kılma davranışı düzeltildi (DataSource.map, ayrıca yer tutucu devre dışı PositionalDataSource yükleme) b/77237534

Sürüm 1.0.0-alpha7

21 Mart 2018

Yaşam Döngüleri 1.1.1 ile birlikte 1.0.0-alpha7 sayfası yayınlandı. Alfa7 sayfası, yukarıda belirtilen Function sınıfının taşınmasına bağlı olduğundan lifecycle:runtime bağımlılığınızı android.arch.lifecycle:runtime:1.1.1 olarak güncellemeniz gerekir.

Sayfalandırmanın beta sürümü kullanıma sunulmadan önce, alpha7 sayfalamanın son sürüm olarak sunulması planlanıyor.

API Değişiklikleri

  • DataSource.LoadParams nesne artık genel oluşturucuya sahip ve DataSource.LoadCallback nesne artık soyut. Bu, bir DataSource öğesinin sarmalanmasına veya bir DataSource öğesini sahte bir geri çağırma ile doğrudan test etmenize olanak tanır. b/72600421
  • DataSource ve DataSource.Factory Haritacılar
    • map(Function<IN,OUT>), DataSource tarafından yüklenen sonuçları dönüştürmenize, sarmanıza veya süslemenize olanak tanır.
    • mapByPage(<List<IN>,List<OUT>>), toplu işlem için de aynısını sağlar (ör. SQL'den yüklenen öğelerin ek olarak ayrı bir veritabanını sorgulaması gerekiyorsa bu işlem toplu olarak yapılabilir.)
  • PagedList#getDataSource(), kolaylık yöntemi olarak eklendi b/72611341
  • recyclerview.extensions paketi ve LivePagedListProvider kalıntıları da dahil olmak üzere, desteği sonlandırılmış tüm sınıflar API'den kaldırıldı.
  • Harita işlevini etkinleştirmek için DataSource.Factory, arayüzden soyut sınıfa değiştirildi.

Hata Düzeltmeleri

  • İnşaatçılar nihai olarak değiştirildi. b/70848565
  • Oda DataSource uygulaması, birden çok tablolu sorguları işleyecek şekilde düzeltildi. Bu düzeltme Oda 1.1.0-beta1'de bulunmaktadır (yukarıya bakın).
  • Yer tutucuların etkin olması ve PositionalDataSource için BoundaryCallback.onItemAtEndLoaded çağrılmasını engelleyen bir hata düzeltildi. toplam boyut, sayfa boyutunun tam katıdır.

Sürüm 1.0.0-alpha5

22 Ocak 2018

Hata Düzeltmeleri

  • Yer tutucular devre dışı bırakıldığında sayfa yüklemeyi düzeltme b/70573345
  • Yasa Dışı ArgumentException hatasının (b/70360195) izlenmesi için ek günlük kaydı (ve oda tarafında tahmine dayalı düzeltme)
  • Javadoc örnek kod düzeltmeleri b/70411933, b/71467637