Sayfalama

Sayfalama Kitaplığı, uygulamanızın RecyclerView öğesinde verileri kademeli ve sorunsuz bir ş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-alpha02
sayfalama-oluşturma 3.2.1 - - 3.3.0-alpha02
Bu kitaplık en son 20 Eylül 2023'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 veya modülünüz için build.gradle dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:

Modern

dependencies {
  def paging_version = "3.2.1"

  implementation "androidx.paging:paging-runtime:$paging_version"

  // alternatively - without Android dependencies for tests
  testImplementation "androidx.paging:paging-common:$paging_version"

  // optional - RxJava2 support
  implementation "androidx.paging:paging-rxjava2:$paging_version"

  // optional - RxJava3 support
  implementation "androidx.paging:paging-rxjava3:$paging_version"

  // optional - Guava ListenableFuture support
  implementation "androidx.paging:paging-guava:$paging_version"

  // optional - Jetpack Compose integration
  implementation "androidx.paging:paging-compose:3.3.0-alpha02"
}

Kotlin

dependencies {
  val paging_version = "3.2.1"

  implementation("androidx.paging:paging-runtime:$paging_version")

  // alternatively - without Android dependencies for tests
  testImplementation("androidx.paging:paging-common:$paging_version")

  // optional - RxJava2 support
  implementation("androidx.paging:paging-rxjava2:$paging_version")

  // optional - RxJava3 support
  implementation("androidx.paging:paging-rxjava3:$paging_version")

  // optional - Guava ListenableFuture support
  implementation("androidx.paging:paging-guava:$paging_version")

  // optional - Jetpack Compose integration
  implementation("androidx.paging:paging-compose:3.3.0-alpha02")
}

Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerini inceleyin.

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

Geri bildirim

Geri bildirimleriniz Jetpack'i iyileştirmemize yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı geliştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni hesap oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Sürüm 3.3

Sürüm 3.3.0-alpha02

20 Eylül 2023

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

Kotlin Çoklu Platform Uyumluluğu

Çağrı, büyük ölçüde CashApp'in çok platformlu sayfalama projesinin yukarı akışlı çalışmaları sayesinde Kotlin Multiplatform ile uyumlu yapıları artık sunuyor. Bu, iki depo arasında farklılık olmasını önlememizi ve iki depoyu uyumlu tutmamızı sağlar.

  • paging-common, tüm Sayfa 3 API'lerini common klasörüne taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumludur.
  • paging-testing, kodunu common içine taşıdı ve artık Android'in yanı sıra jvm ve iOS ile de uyumlu.
  • paging-compose, kodunu common platformuna taşıdı ve androidx.compose tarafından sağlanan çoklu platform desteğiyle eşleşen bir Android yapısı gönderir.
  • 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 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ı var. macOS, iOS ve Linux varyantları için 3.3.0-alpha02 kullanın.

Sürüm 3.2

Sürüm 3.2.1

6 Eylül 2023

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

Hata Düzeltmeleri

  • Yükleme tamamlandığında asSnapshot() bilgisine sahip olmayacağından (PagingData.from(List, LoadStates) aşırı yüklemenin aksine) PagingData.from(List) kullanılarak oluşturulan bir akıştan geçildiğinde Sayfalama Testi yapısının asSnapshot() API'sinin takılmasına neden olan sorun düzeltildi. Bu geçici çözüm yalnızca uyumlu Akışlar (ör. flowOf(PagingData.from(...))) için işe yarar. Uyumlu olmayan Akışlar (ör. MutableStateFlow, LoadStates sağlayan PagingData.from aşırı yükünü kullanın. (I502c3)
  • Yeni verilerin yükleme tamamlanırken aynı çerçevede kullanılabilir olmasını sağlamak için Compose artık dahili olarak AndroidUiDispatcher.Main kullanıyor. (Ia55af)

Sürüm 3.2.0

26 Temmuz 2023

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

3.1.0 sürümünden sonraki önemli değişiklikler

  • Sayfalama Compose, API kararlılığına ulaştı ve bu sürüm artık diğer tüm Sayfalama yapılarıyla eşleşen Sayfalama'nın geri kalanıyla birleştirildi. 3.1.0'dan bu yana yapılan değişiklikler şunlardır:
    • Bir PagingData.from(fakeData) oluşturup PagingData öğesini bir MutableStateFlow (ör. MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) içine sarmalayarak sahte veri listesinin önizlemesini yapma desteği. Bu akışı, önizlemek için collectAsLazyPagingItems() adlı alıcı olarak @Preview bestelerine alıcı olarak iletin.
    • LazyVerticalGrid ve HorizontalPager gibi geç olmayan düzenlerin yanı sıra Wear ve TV kitaplıklarındaki özel geç yüklenen bileşenler için destek. Bu, key ve contentType parametrelerini halihazırda LazyColumn için mevcut olan standart items API'lerine ve HorizontalPager gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olan alt düzey LazyPagingItems uzantı yöntemleri itemKey ve itemContentType aracılığıyla elde edildi.LazyVerticalGrid
    • 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 ve ayrı ayrı Sayfalama ile entegrasyonu için tasarlanmış API'ler sağlayan yeni paging-testing yapısı. Örneğin, şunları içerir:
    • Kendi özel PagingSource uygulamanızın davranışını Çağrı Cihazı ve gerçek kullanıcı arayüzünden bağımsız olarak doğrulamanıza olanak tanıyan TestPager sınıfıdır.
    • asPagingSourceFactory API'leri, Flow<List<Value>> veya statik List<Value> değerini testlerde Pager'a iletilebilecek bir PagingSourceFactory değerine dönüştürür
    • Flow<PagingData<Value>> üzerindeki asSnapshot Kotlin uzantısı, Flow<PagingData<Value>> değerini doğrudan List<Value> olarak ç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, sayfa bölümü içeren veriler kümenizdeki herhangi bir noktada verilerin anlık görüntüsünün doğru olduğunu kontrol edebilirsiniz.
  • Sayfalama hata ayıklama bilgilerini iki düzeyde göstermek için varsayılan günlükler eklendi: VERBOSE ve DEBUG. Günlükler, adb shell setprop log.tag.Paging [DEBUG|VERBOSE] komutu aracılığıyla etkinleştirilebilir. Bu durum, hem Görünümlerle sayfalama hem de Oluşturma ile sayfalama için geçerlidir.
  • PagingDataAdapter ve AsyncPagingDataDiffer için CoroutineDispatcher yerine CoroutineContext kabul eden kurucular eklendi.
  • Önceki () -> PagingSource lambda'lardan daha açık bir API yüzeyi sağlayan yeni bir PagingSourceFactory işlevsel arayüzü eklendi. Bu fabrika, bir Çağrı Cihazı örneklendirmek için kullanılabilir.

Sürüm 3.2.0-rc01

21 Haziran 2023

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

Harici Katkı

  • Sayfalama'nın Android/JVM özelliklerinden uzaklaşmasına katkıda bulunduğunuz için Veyndan'a teşekkür ederiz. (#553, #554, #555, #559)

Sürüm 3.2.0-beta01

7 Haziran 2023

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

Sayfa Oluşturma

  • Sayfa Yazma, API kararlılığına resmen ulaştı. Bu nedenle 1.0.0-alpha20 olan sürüm, artık diğer tüm Sayfalama yapılarının sürümüyle eşleşecek şekilde güncellendi.

API Değişiklikleri

Sürüm 3.2.0-alpha06

24 Mayıs 2023

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

Yeni Özellikler

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

API Değişiklikleri

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

Davranış Değişiklikleri

  • asSnapshot Sayfalama testlerini çalıştırmak için artık ana görev dağıtıcı gerekmiyor. Bu parametre ayarlandığında artık test davranışında herhangi bir değişiklik yapılmaz. (Ie56ea)

Sürüm 3.2.0-alpha05

3 Mayıs 2023

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

API Değişiklikleri

  • asSnapshot Sayfalama Testi API'si artık loadOperations parametresini varsayılan olarak boş bir lambda olarak ayarlıyor. Bu sayede, ilk yenileme yüklemesinden veri almak için herhangi bir yükleme işlemine geçmeden asSnapshot çağrılmasına izin verilir. (Ied354, b/277233770)

Belge İyileştirmeleri

  • Bunun, PagingSource örnekleri oluşturmak için yeniden kullanılabilir bir fabrika döndüren Flow üzerindeki bir genişletme yöntemi olduğunu netleştirmek için asPagingSourceFactory() ile ilgili dokümanlar güncellendi. (I5ff4f, I705b5)
  • Atlamayı desteklemek için itemsBefore ve itemsAfter öğelerini geçersiz kılma gerekliliğini netleştirmek amacıyla LoadResult.Page oluş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ı. Sürüm 3.2.0-alpha04 bu kayıtları içerir.

Çağrı Testi

  • paging-testing yapısı artık bir Flow<List<Value>> öğesinden pagingSourceFactory oluşturmak için bir Çağrı Cihazı'na sağlamak üzere asPagingSourceFactory yöntemi içeriyor. Akıştan yayınlanan her List<Value>>, Sayfalandırılmış veri oluşturmayı temsil eder. Bu, Çağrı Cihazı'nın toplayacağı bir veri kaynağını taklit ederek örneğin PagingData dönüşümleri üzerinde sayfalama testlerini kolaylaştırır. (I6f230, b/235528239)
  • paging-testing yapısı, Flow<PagingData<T>> içinde bulunan verilerin doğru olduğunu doğrulamaya uygun yeni API'lerle genişletildi. Bu, örneğin, ViewModel katmanınızdan bir Flow<PagingData<T>> çıkışını onaylamak 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ü taklit etmenizi sağlar. Tekrarlanabilir ve tutarlı bir şekilde, sayfa bölümü içeren veri kümenizdeki herhangi bir noktada verilerin anlık görüntüsünün doğru olduğunu kontrol edebilirsiniz.

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

    asSnapshot, runTest içinde çalıştırılması beklenen 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, Ib29b9, 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 yalnızca Ana iş parçacığında doğru şekilde çağrılabilir olarak işaretleniyor. (I699b6)
  • TestPager tarafından kullanılan genel türlerden joker karakterler kaldırıldı. Böylece, Java programlama dilinde yazılan kodda bu yöntemlerin sonuçlarını kullanmak daha kolay hale geldi. (I56c42)

Sürüm 3.2.0-alpha03

24 Ekim 2022

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

Çağrı Testi

Bu sürüm yeni bir yapı içeriyor: paging-testing. Bu yapı, uygulamanızın her katmanının birim test edilmesi ve Sayfalama ile entegrasyonunun ayrı olarak yapılması amacıyla tasarlanmış API'ler sağlar.

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

TestPager, sahte, yani Pager işlevinin gerçek uygulamasını yansıtan ve bir PagingSource testi için basitleştirilmiş bir API yüzeyi sağlayan iki test olarak kabul edilmelidir. Bu API'ler, suspend API'leridir ve Android'de Kotlin eş yordamlarını test etme kılavuzunda özetlendiği gibi runTest dahilinde çalıştırılmalıdır.

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

API Değişiklikleri

  • LoadResult.Page.data 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ılmasına dolaylı olarak izin verir. (Ie0718)

Sürüm 3.2.0-alpha02

10 Ağustos 2022

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

Yeni Özellikler

  • Sayfalama artık PagingData kaynağından toplanan hata ayıklama bilgilerini ortaya çıkarmak için 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(), sunucu tarafındaki CombinedLoadStates uygulamasını artık etkilemeyecek. sourceLoadStates ve remoteLoadStates öğelerinin bu oluşturuculara geçirilmesine izin veren yeni bir aşırı yük, LoadStates ayarının tamamen terminal (yani NotLoading(endOfPaginationReached = false)) gönderin. 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 initialKey üzerinde doğru şekilde öncelik verilir ancak null olmayan bir initialKey ayarlanmıştır. (Ic9542, b/230391606)

Harici Katkı

  • Test-coroutines-lib geçişi (I3366d) nedeniyle :compose:ui:ui-test api (updateApi) güncellendi

Sürüm 3.1

Sürüm 3.1.1

9 Mart 2022

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

Hata Düzeltmeleri

  • .cachedIn() tarafından yanlış şekilde eklenen nesiller arasındaki 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ı. Sürüm 3.1.0 bu kayıtları içerir.

3.0.0 sürümünden sonraki önemli değişiklikler

  • Flow<PagingData>.observable ve Flow<PagingData>.flowable API'leri artık deneysel değil
  • LoadState için davranış değişiklikleri:
    • endOfPaginationReached artık hem PagingSource hem de RemoteMediator için LoadType.REFRESH boyunca her zaman false
    • Sayfalama'dan LoadStates, aşağı akış yayını yapmadan önce artık hem PagingSource hem de RemoteMediator için geçerli değerleri bekliyor. Yeni nesil PagingData artık yenileme durumu için her zaman doğru şekilde Loading ile başlayacak. Bazı durumlarda yanlış bir şekilde NotLoading değerine sıfırlamak yerine bu ayardan oluşacak.
    • Sunucu API'lerindeki .loadStateFlow ve .addLoadStateListener artık yedek olarak, aracı durumu her zaman null olarak ayarlanmış ilk CombinedLoadStates göndermez
  • Geçersiz kılma / yeni nesillerde iptal işlemi artık heyecanla gerçekleştiriliyor. Artık Flow<PagingData> sitesinde .collectLatest kullanmanız gerekmese de kullanılması önerilir.
  • PagingSource.LoadResult.Invalid, PagingSource.load öğesinden yeni bir döndürme türü olarak eklendi. Bu durum, Sayfalama'nın 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 olabilecek verileri işlemek için tasarlanmıştır.
  • Sayfalar kullanıcı arayüzünde sunulurken eşzamanlı olarak tetiklenen .onPagesPresented ve .addOnPagesUpdatedListener sunucu API'leri eklendi. Sayfa güncellemeleri aşağıdaki durumlarda gerçekleşebilir:
    • Yeni nesil PagingData'nın ilk yüklemesi, yeni neslin sunulan öğelerde herhangi bir değişiklik içerip içermediğine bakılmaksızın tamamlanır. Liste birebir aynı olduğu için ilk yüklemeyi güncelleme yapmadan tamamlayan yeni nesil, bu geri çağırmayı yine de tetikler.
    • Eklenen sayfa yeni öğe içermese bile sayfa eklenir.
    • Bırakılan sayfa boş olsa bile sayfa atlanır.

Sürüm 3.1.0-rc01

3 Kasım 2021

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

Hata Düzeltmeleri

  • .cachedIn() işlevindeki bir yarış durumu ve bellek sızıntısı düzeltildi. (Ib682e)

Sürüm 3.1.0-beta01

13 Ekim 2021

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

Hata Düzeltmeleri

  • Çok sayıda hızlı öğe erişiminin, prefetchRemote'de değerlendirilmek üzere iptal edilmesine ve sayfa yüklemelerinin durmasına neden olmasına neden olan sorun düzeltildi. Bu durum özellikle, çok sayıda öğenin tek seferde, kullanıcı kaydırma yönüne göre yüklenmeye öncelik verilecek bir sıralamada yerleştirilmesi durumunda sorun yaratır. Bu öğe erişimleri artık arabelleğe alınıyor ve kaldırılmalarını önlemek için eşzamanlı olarak önceliklendiriliyor. (aosp/1833273)

Sürüm 3.1.0-alpha04

29 Eylül 2021

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • LoadStates için endOfPaginationReached, LoadType.REFRESH için her zaman false olur. Önceden, RemoteMediator REFRESH için endOfPaggationReached true değerine sahipken PagingSource için mümkün değildi. REFRESH'in terminal olması hiçbir anlam ifade etmeyeceğinden artık bu davranış artık her zaman false döndürülecek şekilde birleştirilir ve artık LoadStates'teki API sözleşmesi kapsamında belgelenmektedir. Sayfalara ayırmanın sonlandırılıp sonlandırılmayacağına karar verirken bunu her zaman APPEND veya PREPEND talimatlarına göre yapmanız gerekir. (I047b6)
  • Sayfalama'dan LoadState'ler artık nesiller arasında aşağı akış yayını yapmadan önce hem PagingSource hem de RemoteMediator'dan geçerli değerleri bekler. Bu, yeni nesil PagingData öğelerinin, zaten Yükleniyor durumundaysa MergedLoadStates.source.refresh'de NotLoading göndermesini engeller.

    Geçersiz kılma / yeni nesillerde iptal işlemleri artık heyecanla gerçekleştiriliyor. Artık Flow<PagingData> alanında .collectUpdated özelliğini kullanmak gerekli olmasa da bunu yapmanız önemle tavsiye edilir. (I0b2b5, b/177351336, b/195028524)

  • Sunucu API'lerinde .loadStateFlow ve .addLoadStateListener artık yedekli olmayan bir şekilde, aracı durumları her zaman null, kaynak durumları ise NotLoading(endOfPaginationReached = false) olarak ayarlanmış ilk CombinedLoadStates göndermez. Bu gelişme şu anlama geliyor:

    1. RemoteMediator kullanırsanız arabulucu durumları her zaman doldurulur.
    2. PagingData üzerinden gerçek bir CombinedLoadStates almadığı takdirde .loadStateFlow üzerinde yeni bir loadState işleyicisi veya yeni bir toplayıcı kaydetmek artık geçerli değeri hemen yayınlamaz. Bu durum, bir toplayıcı veya dinleyici PagingData gönderilmeden önce başlarsa ortaya çıkabilir. (I1a748)

Sürüm 3.1.0-alpha03

21 Temmuz 2021

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

API Değişiklikleri

  • Üçüncü bir LoadResult dönüş türü LoadResult.Geçersiz Sayfa'ya eklenir. PagingSource.load,LoadResult.Invalid öğesini döndürdüğünde, sayfalama yüklü verileri siler ve PagingSource'u geçersiz kılar. Bu döndürme türü, veritabanından veya ağdan döndürülebilecek, geçersiz ya da eski olabilecek verileri işlemek için tasarlanmıştır.

    Örneğin, temel veritabanının yazılmasına rağmen PagingSource zamanla geçersiz kılınmazsa ve uygulaması, yüklendiği destek veri kümesinin değişmezliğine bağlıysa (ör. LIMIT OFFSET stili db uygulamaları). Bu senaryoda, yüklemeden sonra geçersiz kılma durumunun kontrol edilmesi ve LoadResult. invalid öğesinin döndürülmesi önerilir. Bu durum, Sayfalamanın bu PagingSource'a yönelik bekleyen veya gelecekteki tüm yükleme isteklerini silip geçersiz kılmasına neden olur.

    Bu dönüş türü, LivePagedList veya RxPagedList'ten yararlanan Paging2 API tarafından da desteklenir. PagingSource, Paging2'nin PagedList API'leriyle birlikte kullanıldığında PagedList hemen ayrılır ve bu PagedList'e veri yükleme girişimlerini durdurur ve PagingSource'ta geçersiz kılma işlemini tetikler.

    LoadResult kapalı bir sınıftır. Yani bu, kaynakla uyumsuz olan bir değişikliktir. Bu tür bir değişiklik, doğrudan PagingSource.load sonuçlarının kullanıldığı kullanım alanlarının derleme zamanında LoadResult.Geçersiz'i işlemek zorunda kalacağı anlamına gelir. Örneğin, döndürülen türü kontrol etme işlemi ol (Listede) olan Kotlin kullanıcılarının "Geçersiz tür" için bir kontrol eklemesi gerekir. (Id6bd3, b/191806126, b/192013267)

Hata Düzeltmeleri

  • PagingSource.registerGeçersizCallback veya DataSource.add InvalidatedCallback aracılığıyla eklenen geçersiz kılma geri çağırmaları, zaten geçersiz olan bir PagingSource / DataSource'ta kayıtlıysa artık otomatik olarak tetiklenir. Bu işlem, Sayfalama'nın geçersiz kılma sinyallerini bırakmasına ve başlangıç yükleme sırasında zaten geçersiz olan bir Kaynak sağlandığında takılıp kalmasına yol açan bir yarış durumunu çözer. Ayrıca, en fazla bir kez çağrılmaları garanti edildiğinden, geçersiz kılma işlevi artık tetiklendikten sonra düzgün bir şekilde kaldırılmaktadır. (I27e69)
  • Yer tutucu başlangıç değerini (InitialPagedList) yeni örneklenmiş bir PagedList akışından gönderme, ör. LivePagedListBuilder veya RxPagedListBuilder, artık önceden yüklenmiş verileri temizlemeyecek.

Sürüm 3.1.0-alpha02

1 Temmuz 2021

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

Yeni Özellikler

  • Sunulan sayfalar kullanıcı arayüzünde güncellendikten hemen sonra tetiklenen onPagesDelivered dinleyici ve akış sunucusu API'leri eklendi.

    Bu güncellemeler kullanıcı arayüzü ile eşzamanlı olduğundan, güncelleme uygulandıktan sonraki durumu incelemek için .snapshot, .getItemCount gibi bağdaştırıcı yöntemlerini çağırabilirsiniz. Her güncellemede yapılması pahalı olabileceğinden .snapshot() açık bir şekilde çağrılmaya bırakılır.

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

    • Yeni nesil PagingData'nın ilk yüklemesi, yeni neslin sunulan öğelerde herhangi bir değişiklik içerip içermediğine bakılmaksızın tamamlanır. Listenin tamamen aynı olması nedeniyle, ilk yüklemeyi herhangi bir güncelleme olmadan tamamlayan yeni nesil, bu geri çağırmayı yine de tetikler.
    • Eklenen sayfa yeni öğe içermese bile bir sayfa eklenir
    • Bırakılan sayfa boş olsa bile sayfa atlanır (I272c9, b/189999634)

Hata Düzeltmeleri

  • LivePagedList veya RxPagedList tarafından oluşturulan ilk değerden PagedList.dataSource'a erişmek artık yanlış bir şekilde LegalStateException (I96707) hatasına neden olmayacak.

Sürüm 3.1.0-alpha01

2 Haziran 2021

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Sayfalamanın bazen RecyclerView'a işlem gerektirmeyen farklı etkinlikler göndermesi ve bunun sonucunda belirli işleyicilerin erken tetiklenmesine neden olması sorunu düzeltildi. (Ic507f, b/182510751)

Harici Katkı

  • rxjava3 yapısına desteği sonlandırılmış PagedList compat API'leri eklendi (Id1ce2, b/182497591)

Sayfa Oluşturma Oluşturma Sürümü 1.0.0

Sürüm 1.0.0-alfa20

24 Mayıs 2023

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

Yeni Özellikler

  • Sayfa Yazma artık PagingData.from(fakeData) oluşturup PagingData öğesini MutableStateFlow (ör. MutableStateFlow(PagingData.from(listOf(1, 2, 3)))). Bu veriler @Preview için giriş olarak kullanıldığında collectAsLazyPagingItems() işlevine yapılan çağrılar önizlenebilir LazyPagingItems sağlar. (I8a78d, b/194544557)

Hata Düzeltmeleri

  • LazyPagingItems bölgesinde toplanmış, önbelleğe alınmış veriler (pager.flow.cachedIn) artık durum geri yüklemeden sonra eşzamansız toplama gerektirmeden hemen kullanılabilir olacak Bu, durum geri yüklendikten sonra önbelleğe alınan verilerin, ilk bileşimden hemen sonra sunulmak için hazır olacağı anlamına gelir. (I97a60, b/177245496)

Sürüm 1.0.0-alfa19

3 Mayıs 2023

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

Tüm geç düzenleri destekleme

Daha önce, Sayfa Yazma, LazyListScope üzerinde özel items ve itemsIndexed uzantıları sağlıyordu. Bu da, Sayfa Yazma Yazma'yı LazyVerticalGrid, HorizontalPager gibi diğer geç düzenlerle veya Wear ve TV kitaplıkları tarafından sağlanan diğer özel geç yüklenen diğer bileşenlerle birlikte kullanamadığınız anlamına geliyordu. Bu sürümle ilgili birincil güncelleme, bu esnekliksizliği ortadan kaldırmaktır.

Daha geç düzenleri desteklemek için API'leri farklı bir katmanda oluşturmamız gerekiyordu. Her geç düzen için özel bir items API sağlamak yerine Sayfa Yazma Yazma, itemKey ve itemContentType için LazyPagingItems ürününde artık biraz daha düşük düzeyde uzantı yöntemleri sağlamaktadır. Bu API'ler, key ve contentType parametrelerini LazyColumn ve LazyVerticalGrid için halihazırda mevcut olan standart items API'lerine ve bunların HorizontalPager gibi API'lerdeki eşdeğerlerine uygulamanıza yardımcı olur. (Ifa13b, Ib04f0, b/259385813)

Diğer bir deyişle, bir LazyVerticalGrid desteklenir:

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

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

Bu yeni API'lerin kullanımına ilişkin daha fazla örnek için lütfen örneklerimize bakın.

Bu değişiklikler LazyColumn ve LazyRow örneklerini birkaç satır daha uzatsa da, tüm geç düzenlerdeki tutarlılığın, Sayfalama Yazma'yı kullanacaklar için önemli bir faktör olduğunu düşündük. Bu nedenle, mevcut LazyListScope uzantıları kullanımdan kaldırıldı. (I0c459, I92c8f, b/276989796)

API Değişiklikleri

  • Yeni API'lere geçişi kolaylaştırmak için LazyListScope üzerindeki 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 Yazma'nın bağımlılığı, Compose 1.0.5'ten Compose 1.2.1'e güncellendi. (Ib1918, b/255283378)

Sürüm 1.0.0-alpha18

8 Şubat 2023

androidx.paging:paging-compose:1.0.0-alpha18, hiçbir değişiklik yapılmadan serbest bırakıldı. 1.0.0-alpha18 sürümü bu kayıtları içerir.

Sürüm 1.0.0-alpha17

24 Ekim 2022

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

Yeni Özellikler

Sürüm 1.0.0-alpha16

10 Ağustos 2022

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

Yeni Özellikler

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

Hata Düzeltmeleri

  • paging-compose:1.0.0-alpha15 paging-common:3.1.1 veya daha eski bir sürümle kullanıldığında 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 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, ilk 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ı. 1.0.0-alpha14 sürümü bu kayıtları içerir.

Sürüm 1.0.0-alpha13

29 Eylül 2021

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

API Değişiklikleri

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

Sürüm 1.0.0-alpha12

21 Temmuz 2021

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

API Değişiklikleri

  • Sayfalandırmayı LazyColumn/Row ile bağlamak için kullanı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 bilgiye buradan ulaşabilirsiniz. (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-alpha10

2 Haziran 2021

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

Sürüm 1.0.0-alpha09

18 Mayıs 2021

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

Hata Düzeltmeleri

  • LazyPagingItems' itemCount ve öğe alıcı artık gözlemlenebilir ve böylece LazyVerticalGrid ile de kullanılabilir (Ie2446, b/171872064, b/168285687)

Oluşturma Uyumluluğu

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

Compose 1.0.0-beta01 ile entegrasyon için güncellendi.

Sürüm 1.0.0-alpha07

10 Şubat 2021

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

Compose alfa12 ile entegrasyon için güncellendi.

Sürüm 1.0.0-alpha06

28 Ocak 2021

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

Hata Düzeltmeleri

Compose 1.0.0-alpha11 sürümüne bağlı olarak güncellendi.

Sürüm 1.0.0-alpha05

13 Ocak 2021

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

Compose 1.0.0-alpha10 sürümüne bağlı olarak güncellendi.

Sürüm 1.0.0-alpha04

16 Aralık 2020

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

Hata Düzeltmeleri

  • Uzaktan güncellemenin uygulandığından emin olmak için CombinedLoadStates.refresh, CombinedLoadStates.prepend, CombinedLoadStates.append kolaylık özellikleri yalnızca hem aracı hem de kaynak yükleme durumu NotLoading olduktan sonra Loading değerinden NotLoading değerine geçiş yapacak şekilde güncellendi. (I65619)

Sürüm 1.0.0-alpha03

2 Aralık 2020

androidx.paging:paging-compose:1.0.0-alpha03 yayınlandı. Sürüm 1.0.0-alpha03 bu kayıtları içerir.

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

Sürüm 1.0.0-alpha02

11 Kasım 2020

androidx.paging:paging-compose:1.0.0-alpha02 yayınlandı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.

API Değişiklikleri

  • AsyncPagingDataDiffer / PagingDataAdapter (Iddfe8, b/172041660) içinde kullanılabilen aynı işlevi sunan .peek(), .snapshot(), .retry() ve .refresh() yöntemleri LazyPagingItem kampanyalarına eklendi

Sürüm 1.0.0-alpha01

28 Ekim 2020

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

Yeni Özellikler

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

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

Sürüm 3.0.1

Sürüm 3.0.1

21 Temmuz 2021

androidx.paging:paging-*:3.0.1 yayınlandı. 3.0.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • PagedList.dataSource ürününe LivePagedList veya RxPagedList tarafından oluşturulan ilk değerden erişmek artık hatalı bir Kuraldışı İstisnası (I96707) hatasına yol açmaz

Sürüm 3.0.0

Sürüm 3.0.0

5 Mayıs 2021

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

3.0.0'ın temel özellikleri

Paging 2.x.x'teki mevcut API'nin büyük bölümü, aşağıdaki iyileştirmeleri sağlamak amacıyla yeni Paging 3 API'ler olması amacıyla kullanımdan kaldırılmıştır:

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

Sürüm 3.0.0-rc01

21 Nisan 2021

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

Hata Düzeltmeleri

  • Sayfalamanın bazen RecyclerView'a işlem gerektirmeyen farklı etkinlikler göndermesi ve bunun sonucunda belirli işleyicilerin erken tetiklenmesine neden olması sorunu düzeltildi. (Ic507f, b/182510751)

Sürüm 3.0.0-beta03

24 Mart 2021

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

Hata Düzeltmeleri

  • RecyclerView'da beklenmeyen atlamaları önlemek için liste yeniden yüklendiğinde yer tutucuların işlenme şeklini yeniledik. Ayrıntılar için NullPaddedDiffing.md sayfasına bakın. (If1490, b/170027529, b/177338149)
  • Çeşitli PagedList oluşturucular (eski uyumluluk yolu), .build() çağrıldığında artık ana iş parçacığı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 şartı. Bunlar daha önce @get yönteminde işaretlenmişti. Bu yöntem, Kotlin Derleyici tarafından şu nedenle yoksayılıyordu: https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)

Hata Düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımında kısıtlamalar uygula (I6aa29, b/174531520)
  • Uzaktan yenileme çağrıldığında PagingState öğesinin her zaman null olmasına neden olan bir hata düzeltildi.
  • PagingSource tarafından döndürülen boş sayfaların, prefetchDistance işlevini yerine getirmek için Sayfalama'nın tekrar getirilmesini engelleyerek Sayfalama'nın "takılmasına" neden olan hata düzeltildi.

Sürüm 3.0.0-beta01

10 Şubat 2021

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

API Değişiklikleri

  • Rx2 ve Rx3 sarmalayıcıları artık bağımlı olduğu deneysel ek açıklamayı gösteriyor. paging-rxjava2 veya pageing-rxjava3'te Rx uyumlu sarmalayıcıları kullanıyorsanız artık kullanımlara @OptIn(ExperimentalCoroutinesApi::class) (Ib1f9d) ile ek açıklama eklemeniz gerekir.

Hata Düzeltmeleri

  • Uyumluluk yolları üzerinden v2 DataSource API'leri kullanılırken bazen IndexOutOfBoundsException: Inconsistency detected hatası düzeltildi
  • Uyumluluk yolları aracılığıyla kullanıldığında DataSource öğesinin başlatılması sırasında isInvalid çağrısı, artık ana iş parçacığı yerineFetchDispatcher'da doğru şekilde başlatılıyor. Bu işlem, Odanın PagingSource uygulamasını kullanırken ana ileti dizisinde Db erişimi nedeniyle bir 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 bir uygulaması olmayan soyut bir işlevdir. Kullanıcılar taşıma işlemini gerçekleştirirken varsayılan uygulamayı döndürmeye devam edebilir. Bu durumda yalnızca null döndürülü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, Sayfalama'nın mümkünse PagingState.anchorPosition aracılığıyla görüntü alanı etrafında ortalanmış şekilde yüklenmeye devam etmesine olanak tanır. (I4339a)
  • InvalidatingPagingSourceFactory artık final sınıfı (Ia3b0a)
  • İsteğe bağlı ek bir SeparatorType parametresiyle terminal ayırıcı (üstbilgi / altbilgi) davranışının yapılandırılmasına izin verin. İki seçenek şunlardır:
    • FULLY_COMPLETE - mevcut davranış. Terminal ayırıcıları eklemeden önce hem PagingSource hem de RemoteMediator'ın endOfPaggationReached'ı işaretlemesini bekleyin. RemoteMediator kullanılmazsa uzaktan loadState yoksayılır. Bu, özellikle ağ gibi uzak bir kaynaktan alma dahil, bölüm ayırıcıları yalnızca bölüm tam olarak yüklendiğinde göstermek istiyorsanız yararlı olur.
    • SOURCE_COMPLETE: RemoteMediator kullanılsa bile yalnızca PagingSource'un endOfPaggationReached'i işaretlemesini bekleyin. Bu, üst bilgilerin ve alt bilgilerin ilk yüklemeyle eşzamanlı olarak sunulmasına olanak tanır. Böylece, kullanıcıların terminal ayırıcılarını görmek için sayfayı kaydırması gerekmez. (Ibe993, b/174700218)

Hata Düzeltmeleri

  • Bir PagingSource, PageFetcher'dan yüklenmeye başlamadan önce geçersiz kılındığında meydana gelen nadir görülen bellek sızıntısı düzeltildi. (I9606b, b/174625633)

Sürüm 3.0.0-alpha12

13 Ocak 2021

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

API Değişiklikleri

  • InvalidatingPagingSourceFactory, hiçbir soyut yönteme sahip olmadığı için artık soyut bir sınıf değildir. (I4a8c4)
  • Java kullanıcıları için Lifecycle veya CoroutineScope yerine ViewModel'i kabul eden bir aşırı .cachedIn() yüklemesi eklendi. (I97d81, b/175332619)
  • Java çağrılarının bir Yürütücüyü dönüştürme operatörü bağımsız değişkenlerine kabul ederek PagingData dönüştürme işlemlerini eşzamansız bir şekilde kullanmasına izin verin. Tüm -Senkronizasyon dönüştürme operatörleri, -Senkronizasyon son eki kaldırılmıştır ve Kotlin Coroutine kullanıcılarının bunun yerine askıya alma blokunu kabul eden uzantı işlevini çağırarak konunun netleştirilmesi gerekir. Tüm PagingData dönüşüm operatörleri, statik PagingDataTransforms sınıfının altındaki uzantılara taşındı. Java kullanıcılarının bunları statik yardımcılar (ör. PagingDataTransforms.map(pagingData, transform) Kotlin kullanıcıları için söz dizimi aynıdır ancak işlevi içe aktarmanız gerekir. (If6885, b/172895919)

Hata Düzeltmeleri

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

Sürüm 3.0.0-alpha11

16 Aralık 2020

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

Yeni Özellikler

  • Aşağıdaki temel kullanım alanları için kaydedilen durum desteği eklendi (özellikle katmanlı kaynak durumunda tam destek için hâlâ çalışmalar devam etmektedir):
    • Akışın önbelleğe alınması ve uygulama sonlandırılmaması (ör. akış, görüntüleme modelinde önbelleğe alınır ve etkinlik işlemde yeniden oluşturulur)
    • sayfalama kaynağı sayılır, yer tutucular etkinleştirilir ve düzen değiştirilmez.

API Değişiklikleri

  • PagingSource.getRefreshKey() artık kararlı bir API (I22f6f, b/173530980)
  • PagingSource.invalidate artık açık bir işlev değil. Geçersiz kılma işlemi olduğunda bildirim almanız gerekiyorsa geçersiz kılmayı geçersiz kılmak yerineregister InvalidatedCallback yöntemini çağırabilirsiniz. (I628d9, b/173029013, b/137971356)
  • Pager artık normal kurucularının yanı sıra tek bir deneysel oluşturucuya sahip. Bunun yerine deneysel API'leri isteğe bağlı olan herkese açık API'ye sızdırmak yerine bu yöntemi etkinleştiriyor. (I9dc61, b/174531520)
  • Uzaktan güncellemenin uygulandığından emin olmak için CombinedLoadStates.refresh, CombinedLoadStates.prepend, CombinedLoadStates.append kolaylık özellikleri yalnızca hem aracı hem de kaynak yükleme durumu NotLoading olduktan sonra Loading değerinden NotLoading değerine geçiş yapacak şekilde güncellendi. (I65619)
  • LoadParams.pageSize kaldırıldı (önceden kullanımdan kaldırılmış). PagingSource'ta LoadParams.loadSize kullanmanızı öneririz.

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

    Paging2 DataSource'unuzu Pager veya PagedList kullanmadan test ediyorsanız initialLoadSize ayarını da 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 değerini dahili olarak ayarlayacak bir Pager/PagedList kullanmayı deneyin. (I98ac7, b/149157296)

Hata Düzeltmeleri

  • PagingConfig.maxSize ayarlıyken ayırıcılar kullanılırken IllegalStateException nedeniyle meydana gelen kilitlenme düzeltildi. (I0ed33, b/174787528)
  • RemoteMediator ayarlanmışsa PREPEND / APPEND için yükleme durumunun ilk yüklemeden hemen sonra NotLoading(endOfPaginationReached = true) olarak güncellenmemesi hatası düzeltildi (I8cf5a)
  • Sunucu tarafı API'lerin (ör. .snapshot(), .peek() vb.) ListUpdateCallback güncellemelerinde önceki (eski) listeyi döndürmesine neden olan hata düzeltildi.
  • RemoteMediator ile kullanıldığında Ayırıcı operatörlerinin üstbilgi veya altbilgi eklememesine neden olan hata düzeltildi
  • RemoteMediator için LoadState güncellemelerinin Yükleme durumunda takılmasına neden olan hata düzeltildi
  • Paging2.0 uyumluluk API'sinin (.asPagingSourceFactory()) destek DataSource öğesinin yanlış CoroutineDispatcher üzerinde başlatılmasına neden olabileceği bir hata düzeltildi. Bu, özellikle Room'un bu uyumluluk yolunu kullanan mevcut PagingSource uygulaması kullanılırken kilitlenmeyi ve olası ANR olaylarını çözer.

Sürüm 3.0.0-alpha10

2 Aralık 2020

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

API Değişiklikleri

  • Kullanımdan kaldırılan dataRefreshFlow ve dataRefreshListener API'leri,loadStateFlow / İşleyici güncellemeleriyle gereksiz olduklarından kaldırıldı. Taşıma işlemindekiler için loadStateFlow'un eşdeğeri şudur:

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

    (Ib5570, b/173530908)

Hata Düzeltmeleri

  • RemoteMediator REFRESH için endOfPaggationReached, artık LoadState güncellemelerine doğru şekilde yayılmakta ve uzaktan APPEND ve PREPEND sürümlerinin tetiklenmesini önlüyor. (I94a3f, b/155290248)
  • Boş ilk sayfa veya yoğun filtreleme nedeniyle boş bir liste sunmak artık Sayfalama'nın PREPEND veya APPEND yüklemeyi başlatmasını engellemez. (I3e702, b/168169730)
  • Geçersiz kılma işlemleri hızlı bir şekilde gerçekleştiğinde getRefreshKey, sonraki PagingSource nesillerinde çağrılmadığı için sorun giderildi. (I45460, b/170027530)

Harici Katkı

  • Geçersiz kılmayı, yaydığı tüm PagingSource'lara yönlendiren bir .invalidate() API ile yeni bir soyut sınıf InvalidatingPagingSourceFactory eklendi. @claraf3 adına teşekkürler! (Ie71fc, b/160716447)

Bilinen Sorunlar

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

Sürüm 3.0.0-alpha09

11 Kasım 2020

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

API Değişiklikleri

  • dataYenileFlow / İşleyici yöntemlerini bir replaceWith ifadesiyle tamamen kullanımdan kaldırın. (I6e2dd)

Hata Düzeltmeleri

  • RemoteMediator ile ayırıcılar kullanıldığında IllegalArgumentException hatasıyla ilgili düzeltme yapıldı ve endOfPagulation döndüren bir uzaktan yükleme çalışırken geçersiz kılma tetiklendi (I3a260)

Sürüm 3.0.0-alpha08

28 Ekim 2020

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

API Değişiklikleri

  • DataSource.InvalidatedCallback için Kotlin / Java varyantları, işlevsel arayüz aracılığıyla Kotlin'de SAM dönüşümlerinin etkinleştirilmesiyle birleştirildi (Kotlin 1.4'te mevcuttur). Bu ayrıca, .map veya .mapByPage tarafından dönüştürüldükten sonra geri çağırmaları geçersiz kılan kotlin varyantının çağrılmadığı bir hatayı da düzeltir. (I1f244, b/165313046)

Hata Düzeltmeleri

  • Paging'in ViewPager ile etkileşimi önemli ölçüde geliştirildi. Ayrıntılı olarak belirtmek gerekirse, Sayfalama artık bir sayfanın geçersiz kılınması nedeniyle RemoteMediator#load aramasını iptal etmeyecektir. Ayrıca, REFRESH gerekliyse REFRESH isteği başarıyla tamamlanana kadar yükleme/ekleme isteği göndermez. (I6390b, b/162252536)
  • androidx için EksikGetterMatchingBuilder için API lint kontrolü etkinleştirildi (I4bbea, b/138602561)
  • Arka plan iş parçacığından (I18bb5, b/170988309) RecyclerView'un bildirilmesi nedeniyle .withLoadState* ConcatAdapter yardımcılarının kilitlenmesine neden olan hata düzeltildi.
  • Çok küçük, boş olmayan bir sayfanın yüklenmesinin bazen önceden getirmenin yüklemeleri doğru şekilde tetiklemesini engellemesine neden olan hata düzeltildi.Iffda3 b/169259468

Sürüm 3.0.0-alpha07

1 Ekim 2020

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

API Değişiklikleri

  • Eş zamansız PagingData Guava tabanlı operatörler, yürütme bağlamını kontrol etmek için artık Yürütücüyü parametre olarak kabul ediyor. (Id4372)

Hata Düzeltmeleri

  • Bir yarış durumu nedeniyle RemoteMediator'da IndexOutOfBounds istisnasının gönderilmesi düzeltildi. (I00b7f, b/165821814)
  • DataSource -> PagingSource dönüşümünde ortaya çıkan PagingSource'un DataSource'tan gelen geçersiz kılma sinyallerini yoksaymasına neden olabilecek yarış durumu düzeltildi.
  • Sayfa getirme mantığındaki, PagingDataAdapter.refresh() çağrılana kadar bazen yeni nesil PagingSource'un alınamamasına neden olan bir sorun düzeltildi.
  • RemoteMediator ile birlikte PagingSource'a dönüştürülmüş bir DataSource (Oda tarafından üretilen kaynak gibi) kullanıldığında kaydırma konumunun kaybolmasına neden olan sorun giderildi

Harici Katkı

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

Sürüm 3.0.0-alpha06

2 Eylül 2020

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

API Değişiklikleri

  • Kararlı kimlikler için destek olmadığı konusunda daha net mesajlar veren UnsupportedOperationException, artık PagingDataAdapter.setHasStableIds her çağrıldığında bildiriliyor. (Ib3890, b/158801427)

Hata Düzeltmeleri

  • insertSeparators artık boş sayfaları filtrelemez ve böylece, çok sayıda boş sayfa eklenmiş olsa bile önceden getirme mesafesinin sunucu tarafından dikkate alınmasını sağlar. (I9cff6, b/162538908)

Sürüm 3.0.0-alpha05

19 Ağustos 2020

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

Hata Düzeltmeleri

  • Sayfalandırma, sunulan veriler yoğun bir şekilde filtrelendiğinde bile sayfaları artık doğru bir şekilde önceden getirmektedir.
  • Yeniden denenen yükleme işlemine LoadResult.Error döndürülmesi, artık öğe erişimlerinin yeniden deneme işlemini hatalı şekilde yeniden tetiklemesine neden olmuyor

Harici Katkı

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

Sürüm 3.0.0-alpha04

5 Ağustos 2020

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

API Değişiklikleri

  • Tetikleyici sayfa yüklemeleri olmadan sunulan verilere erişime izin vermek için peek() API'si AsyncPagingDataDiffer ve PagingDataAdapter öğelerine eklendi. (I38898, b/159104197)
  • Sunulan öğelerin sayfa getirme işlemini tetiklemeden alınmasını sağlamak için PagingDataAdapter ve AsyncPagingDataDiffer öğelerine snapshot() API'si eklendi. (I566b6, b/159104197)
  • Statik listelerin sunulmasına izin vermek amacıyla belirli durumlarda (ör. ilk REFRESH işlemi tamamlanmadan önce veya yalnızca dönüşümleri test etmek için) statik listeleri göstermek için genel PagingData akışıyla birleştirilebilen PagingData.from(List<T>) kurucusu eklendi. (Id134d)
  • REFRESH'de sunulan öğelerin durumunu açığa çıkarmayı amaçladıkları için datarefresh Flow / İşleyici API'lerini kullanımdan kaldırın, ancak loadState Flow / İşleyici geri çağırma zamanlaması ve itemCount özelliğinde yapılan iyileştirmelerle gereksizdir (Ia19f3).
  • PagingSource 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 yol açabilmesine neden olan hata düzeltildi (I4d702, b/160192222)

Harici Katkı

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

Sürüm 3.0.0-alpha03

22 Temmuz 2020

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

API Değişiklikleri

  • PagingState kurucusu artık herkese açıktır. Bu, getYenileKey() uygulamalarını test etmeyi kolaylaştırır (I8bf15)
  • Orijinal ve kotlin varyantları arasındaki belirsizliği düzeltmek için Java'dan DataSource kotlin harita işlevi varyantları gizlendi. (If7b23, b/161150011)
  • Kotlin kullanıcılarına kolaylık sağlamak amacıyla sunulan yedek API'ler @JvmSynthetic (I56ae5) olarak işaretlenmiştir
  • LoadResult.Page oluşturucusu için aşırı yüklemeler eklendi. Bu bileşen, itemBefore ve itemsAfter öğelerini COUNT_UNDEFINED değerine varsayılan olarak ayarlar (I47849).
  • Mevcut PagingData operatörlerinin askıya alma yöntemlerini kabul etmesini sağladı ve Java kullanıcıları için yeni MapSync, highMapSync ve filterSync askıya alınmayan operatörleri kullanıma sunuldu. Mevcut dönüştürme yöntemleri uzantı işlevlerine taşındığı için Kotlin kullanıcılarının artık bunları içe aktarması gerekiyor. (I34239, b/159983232)

Hata Düzeltmeleri

  • Oda (ve PositionalDataSource) PagingSources artık ilk sayfanın parçası olarak baştaki bir ayırıcıyı gösterecek. Böylece, kullanıcının bunu görmek için sayfayı kaydırmasına gerek kalmayacak. (I6f747, b/160257628)
  • Yer tutucularda öğe erişimleri artık PagingData.filter() (I95625, b/158763195) tarafından dönüştürüldükten sonra istenen dizini karşılayan bir sayfa döndürülene dek PagingSource'un yüklenmesini doğru bir şekilde tetikler.
  • PagingSource'tan sonra kaydırmanın bazen hata döndürdüğü, PagingDataAdapter.retry() işlevinin yeniden denemesini engelleyebileceği hata düzeltmesi. (I1084f, b/160194384)
  • Öğe erişimi prefetchMesafe (Ie95ae, b/160038730) dahilinde olmasına rağmen bir sayfa düşürüldükten sonra öğenin sayfaların yüklenememesine neden olan sorunu düzeltir
  • PagingConfig.maxSize ayarlamak, bir düşüş etkinliğinden sonra artık yer tutucuları etkinleştirmez (I2be29, b/159667766)

Sürüm 3.0.0-alpha02

24 Haziran 2020

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

API Değişiklikleri

  • PagingConfig oluşturucu için ortak varsayılan değerlerle (I39c50, b/158576040) aşırı yüklemeler eklendi
  • PagingDataAdapter ve AsyncPagingDataDiffer oluşturucuları için ortak varsayılan değerlerle (Ie91f5) aşırı yüklemeler eklendi
  • dataRefreshFlow ve dataRefreshListener bağdaştırıcısı API'leri artık bir PagingData öğesinin boş olup olmadığını belirtmek için Boole iletir (I6e37e, b/159054196)
  • RemoteMediator için RxJava ve Guava API'leri eklendi - RxRemoteMediator ve ListenableFutureRemoteMediator
  • isEmpty() 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 Sayfa Kaynağının yanlışlıkla yeniden kullanılmasını önlemek için artık PagingSource'un fabrikada yeniden kullanılıp kullanılmadığını kontrol eder ve belirsiz bir hata verir (I99809, b/158486430).
  • RemoteMediator REFRESH'deki hatalar artık PagingSource'un yüklenmesini engellemiyor (I38b1b, b/158892717)
  • submitData ürününün askıya alma olmayan sürümü, submitData askıya alma sürümünden sonra çağrıldığında birden fazla PagingData üzerinde eşzamanlı veri toplama nedeniyle artık kilitlenmeye neden olmuyor. (I26358, b/158048877)
  • Yapılandırma değişikliğinden (I58bcc, b/158784811) sonra oluşabilecek "çağrı cihazından iki kez toplanamaz" istisnası düzeltildi

Sürüm 3.0.0-alpha01

10 Haziran 2020

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

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

3.0'daki Yeni Özellikler

Bilinen Sorunlar

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

Sürüm 2.1.2

Sürüm 2.1.2

18 Mart 2020

androidx.paging:paging:2.1.2 yayınlandı. Sürüm 2.1.2, 2.1.0 ile karşılaştırıldığında bu kaydetme işlemlerini içerir.

Hata Düzeltmeleri

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

Sürüm sorunu

  • 2.1.1 sürümü, yanlış yapılandırılmış bir daldan yanlışlıkla yayınlanmıştı. Bu durum, kısmen uygulanmış API'leri ve işlevleri gelecekteki bir sürümde ortaya çıkarıyor.

  • 2.1.2 sayfası, başlangıçta 2.1.1'de kullanıma sunulan yük ortalama düzeltmesini içeriyor, ancak bu kez 2.1.0 sürümünün ardından doğru şekilde seçildi. Şu anda 2.1.1 sürümünü kullanıyorsanız bu sürüme geçmeniz önemle tavsiye edilir.

Sürüm 2.1.1

Sürüm 2.1.1

18 Aralık 2019

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

Hata düzeltmeleri

  • PositionalDataSource'tan gelen ardışık ilk yüklemeler, yer tutucular devre dışı bırakıldığında artık son erişim çevresinde ortalanıyor

Sürüm 2.1.0

Sürüm 2.1.0

25 Ocak 2019

2.1.0 sayfası, 2.1.0-rc01 tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.

Sürüm 2.1.0-rc01

6 Aralık 2018

2.1.0-rc01 sayfası, 2.1.0-beta01 tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.

Sürüm 2.1.0-beta01

1 Kasım 2018

2.1.0-beta01 sayfası, 2.1.0-alpha01 tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.

Sürüm 2.1.0-alpha01

12 Ekim 2018

2.1.0-alpha01 sayfası için iki önemli ekleme (sayfa atlama ve her yapı için KTX uzantı kitaplıklarının yanı sıra başka API değişiklikleri ve hata düzeltmeleri) vardır.

API Değişiklikleri

  • Bellekteki yüklenen öğe sayısını sınırlamak için PagedList.Config.Builder.setMaxSize() eklendi.
  • PagedList.Config.Builder için Kotlin alternatifi 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 karşılayan PagedListAdapter.onCurrentListChanged() varyant eklendi, önceki varyant kullanımdan kaldırıldı.
  • Sayfa listesi görüntülenirse/gösterilirse farkın ardından tetiklenen ek bir geri çağırma alan PagedListAdapter/AsyncPagedListDiffer.submitList() varyantları eklendi. Bu, PagedList değişikliğini diğer kullanıcı arayüzü güncellemeleriyle senkronize etmenize olanak tanır. b/73781068
  • Hafızanızda kaç öğe olduğunu bildirmek için PagedList.getLoadedCount() eklendi. Yer tutucular devre dışı bırakılırsa döndürülen değerin her zaman .size() değerine eşit olacağını unutmayın.

Hata Düzeltmeleri

  • Listelerin yeniden kullanılması durumunda fark oluştururken karşılaşılan yarış durumu düzeltildi b/111591017
  • Dizin geçersiz olduğunda PagedList.loadAround() artık IndexOutOfBoundsException hatası veriyor. Daha önce, belirsiz başka bir istisnayla çökebiliyordu.
  • b/113122599'un, değişmeyen verilerle birlikte son derece küçük bir başlangıç yükleme boyutunun daha fazla yüklenmemesine neden olması durumu düzeltildi.

Sürüm 2.0.0

Sürüm 2.0.0

1 Ekim 2018

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

Hata Düzeltmeleri

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

Sürüm 2.0.0-beta01

2 Temmuz 2018

Hata Düzeltmeleri

  • Bazı baştaki durumlarda kaybolan içerik düzeltildi (yer tutucular devre dışı, PositionalDataSource) b/80149146
  • (1.0.1 ürününde zaten yayınlandı) PagedListAdapter ve AsyncPagedListDiffer öğelerinin taşıma etkinliklerine sinyal gönderememesine neden olan kilitlenmeler düzeltildi. b/110711937

AndroidX Öncesi Bağımlılıklar

Paging'in AndroidX öncesi sürümleri için aşağıdaki bağımlılıkları ekleyin:

dependencies {
    def paging_version = "1.0.0"

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

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

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

Sürüm 1.0.1

Sürüm 1.0.1

26 Haziran 2018

1.0.1 sayfası, runtime içinde tek bir hata düzeltmesiyle birlikte yayınlandı. Kararlılık için 1.0.1 kullanmanızı önemle tavsiye ederiz. RxJava2 1.0.1 sayfalama da yayınlanmıştır ve 1.0.0-rc1 ile aynıdır.

Hata Düzeltmeleri

  • PagedListAdapter 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 çağrışımı, ilk alfa sürümünden itibaren herhangi bir değişiklik yapılmadan adayı sürüm sürümüne geçiriyor.

Sürüm 1.0.0

Sürüm 1.0.0-rc1

19 Nisan 2018 Arama Yayını Adayı

1.0.0 Çağrısı için planlanmış başka bilinen bir sorun veya yeni özellik yoktur. 1.0.0-rc1 özelliğini kullanmak için lütfen projelerinizi yükseltin ve sağlam bir 1.0.0 gönderebilmemiz için savaş testi yapmamıza yardımcı olun.

Bu sürüm, 1.0.0-beta1 sürümüyle aynı olduğundan bu sürümde değişiklik yok.

Sürüm 1.0.0-beta1

5 Nisan 2018

Sayfa, adayı bırakmak için çalışmaya devam etmeden önce kısa bir süreliğine beta sürümünde olacak. Paging 1.0 için başka API değişikliği planlamıyoruz ve API değişiklikleri için çıta çok yüksek.

Sayfalama için Alfa RxJava2 desteği, ayrı bir isteğe bağlı modül (android.arch.paging:rxjava2:1.0.0-alpha1) olarak yayınlanmıştır ve sabitlenene kadar geçici olarak ayrı bir sürüm sunulacaktır.

Bu yeni kitaplık, LivePagedListBuilder yerine bir RxJava2 alternatifi sağlar. Bu alternatif, Executor yerine Scheduler kullanarak Observable ve Flowable oluşturabilir:

Kotlin

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

Java

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

Yeni Özellikler

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

API Değişiklikleri

  • Yürütücülerin oluşturuculardaki rolünü netleştirmek için API değişiklikleri:

    • setBackgroundThreadExecutor() adlı 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 olması düzeltildi.

Hata Düzeltmeleri

  • LivePagedListBuilder, ilk PagedList yükünü Arch Bileşenleri IO iş parçacığı havuzu yerine belirtilen yürütücüde tetikler.

  • Dahili DataSource sarmalayıcılarındaki geçersiz kılma davranışı düzeltildi (DataSource.map ve yer tutucu devre dışı bırakılan PositionalDataSource yüklemesi için kullanılır) b/77237534

Sürüm 1.0.0-alpha7

21 Mart 2018

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

alpha7 sayfalandırmasının, Sayfalama isabetleri beta aşamasından önce son sürüm olarak sunulması planlanmaktadır.

API Değişiklikleri

  • DataSource.LoadParams nesnelerinin artık ortak kurucusu var ve DataSource.LoadCallback nesne soyut özellikte. Bu, DataSource öğesinin sarmalanmasını veya DataSource öğesinin örnek geri çağırmayla doğrudan test edilmesini sağlar. b/72600421
  • DataSource ve DataSource.Factory Harita Çalışanları
    • map(Function<IN,OUT>), bir 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.)
  • Kolaylık yöntemi olarak PagedList#getDataSource() eklendi b/72611341
  • recyclerview.extensions paketi ve LivePagedListProvider paketinin kalanları da dahil olmak üzere desteği sonlandırılmış tüm sınıflar API'den kaldırıldı.
  • Harita işlevselliğinin etkinleştirilmesi için DataSource.Factory, arayüzden soyut sınıf olarak değiştirildi.

Hata Düzeltmeleri

  • Oluşturucular nihai olarak değiştirildi. b/70848565
  • Oda DataSource uygulaması, birden fazla tablo içeren sorguları işlemek için artık düzeltildi. Bu düzeltme Oda 1.1.0-beta1 içinde yer almaktadır (yukarıya bakın).
  • Yer tutucular etkinse ve toplam boyut sayfa boyutunun tam katıysa PositionalDataSource iç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üzeltmesi) takibi için ek günlük kaydı
  • Javadoc örnek kodu düzeltmeleri: b/70411933, b/71467637