पृष्ठांकन

पेजिंग लाइब्रेरी से, पब्लिशर के लिए ताकि आप अपने ऐप्लिकेशन के डेटा को धीरे-धीरे और ग्रेसफ़ुल तरीके से लोड कर सकें RecyclerView.

इस टेबल में, androidx.paging ग्रुप के सभी आर्टफ़ैक्ट शामिल हैं.

सह-प्रॉडक्ट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
पेजिंग-* 3.3.2 - - -
पेजिंग-कंपोज़ 3.3.2 - - -
यह लाइब्रेरी पिछली बार 7 अगस्त, 2024 को अपडेट की गई थी

डिपेंडेंसी तय करना

पेजिंग पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट. Google की Maven रिपॉज़िटरी पढ़ें हमारा वीडियो देखें.

उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको build.gradle फ़ाइल में ज़रूरत है आपका ऐप्लिकेशन या मॉड्यूल:

ग्रूवी

dependencies {
  def paging_version = "3.3.2"

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

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

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

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

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

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

Kotlin

dependencies {
  val paging_version = "3.3.2"

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

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

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

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

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

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

Kotlin एक्सटेंशन का इस्तेमाल करने के बारे में जानकारी के लिए, यहां देखें ktx दस्तावेज़.

डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ें लेख पढ़ें.

सुझाव

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको नई समस्याओं का पता चलता है या आपको इस लाइब्रेरी को बेहतर बनाने के लिए आइडिया मिल सकते हैं. कृपया, इस मौजूदा समस्याएं इस लाइब्रेरी में जोड़ें. किसी मौजूदा समस्या के लिए अपना वोट दें. इसके लिए ये तरीके अपनाएं: स्टार बटन पर क्लिक करके ऐसा किया जा सकता है.

नई समस्या जोड़ें

समस्या को ट्रैक करने वाले टूल से जुड़ा दस्तावेज़ देखें हमारा वीडियो देखें.

वर्शन 3.3

वर्शन 3.3.2

7 अगस्त, 2024

androidx.paging:paging-*:3.3.2 रिलीज़ हो गया है. वर्शन 3.3.2 में ये बातें शामिल हैं.

नई सुविधाएं

  • paging-common और paging-testing ने नए Kotlin-Multiplatform टारगेट जोड़े हैं: watchos, tvos, और linuxArm64 (90c9768), (53e0eca)

वर्शन 3.3.1

24 जुलाई, 2024

androidx.paging:paging-*:3.3.1 रिलीज़ हो गया है. वर्शन 3.3.1 में ये शर्तें शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक कर दिया गया है जहां AsyncPagingDataDiffer या इसके ऊपर बने एपीआई (जैसे कि RecyclerView के साथ इस्तेमाल किया गया PagingDataAdapter), स्क्रोल करने के दौरान बैकिंग डेटा सोर्स को रीफ़्रेश करने पर ज़्यादा लोड ट्रिगर नहीं कर सकेंगे. (I60ca5, b/352586078)
  • PagingDataAdapter या AsyncPagingDataDiffer का इस्तेमाल करके, RecyclerView को स्क्रोल करते समय, बैकिंग डेटा सोर्स से आइटम हटाने पर होने वाले क्रैश को ठीक किया गया है. (I8c65a, b/347649763)

वर्शन 3.3.0

14 मई, 2024

androidx.paging:paging-*:3.3.0 रिलीज़ हो गया है. वर्शन 3.3.0 में ये बातें शामिल हैं.

3.2.0 के बाद से हुए अहम बदलाव

  • PagingDataPresenter अब एक सार्वजनिक क्लास है. इंटरनल पेजिंग एपीआई या paging-runtime के AsyncPagingDataDiffer की ज़रूरत नहीं, बल्कि अब PagingDataPresenter के साथ मल्टीप्लैटफ़ॉर्म प्रज़ेंटर बनाए जा सकते हैं.
  • LoadStates, गड़बड़ी की स्थिति में है या NotLoading की स्थिति में है, यह जांचने के लिए hasError और isIdle में नए LoadStates और CombinedLoadStates हेल्पर तरीके जोड़े गए. साथ ही, Flow<CombinedLoadStates> पर awaitNotLoading() Kotlin एक्सटेंशन का नया तरीका जोड़ा गया है, जो लोड को NotLoading या गड़बड़ी की स्थिति में सेटल होने तक इंतज़ार करता है.
  • जब तक कस्टम LoadStates को कंस्ट्रक्टर के पास नहीं भेजा जाता, तब तक PagingData.empty(), डिफ़ॉल्ट रूप से NotLoading स्टेट को डिस्पैच करता है. यह मौजूदा व्यवहार से अलग होता है, जहां यह PagingDataAdapter को सबमिट किए जाने पर LoadStates को नहीं भेजता या LazyPagingItems के तौर पर इकट्ठा किए जाने पर लोडिंग स्टेटस को डिस्पैच करता है. LazyPagingItems के रूप में इकट्ठा किए जाने पर, अब वह शुरुआती कंपोज़िशन के तुरंत बाद एक खाली सूची भी दिखाएगा.

Kotlin की मल्टीप्लैटफ़ॉर्म के साथ काम करने की सुविधा

पेजिंग के लिए, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट भेजे जा सकते हैं. साथ ही, CashApp के मल्टीप्लैटफ़ॉर्म-पेजिंग प्रोजेक्ट से अपस्ट्रीम काम के लिए, काफ़ी धन्यवाद.

  • paging-common ने सभी पेजिंग 3 एपीआई को common में भेज दिया है. अब यह Android के साथ-साथ, jvm और iOS के साथ भी काम करता है.
  • paging-testing ने अपने कोड को common पर भेज दिया है. अब यह Android के साथ-साथ, jvm और iOS के साथ भी काम करता है.
  • paging-compose ने अपने कोड को common पर भेज दिया है. साथ ही, यह एक ऐसा Android आर्टफ़ैक्ट भेजता है जो मल्टीप्लैटफ़ॉर्म की सुविधा से androidx.compose की मदद से मेल खाता है.
  • paging-runtime, paging-guava, paging-rxjava2, और paging-rxjava3 सिर्फ़ Android पर उपलब्ध रहेंगे.

वर्शन 3.3.0-rc01

1 मई, 2024

androidx.paging:paging-*:3.3.0-rc01 पेजिंग 3.3.0-beta01 में बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 3.3.0-rc01 में ये बातें शामिल की गई हैं.

वर्शन 3.3.0-beta01

3 अप्रैल, 2024

androidx.paging:paging-*:3.3.0-beta01 रिलीज़ हो गया है. इसमें कोई खास बदलाव नहीं हुआ है. वर्शन 3.3.0-beta01 में ये प्रतिबद्धताएं शामिल हैं.

वर्शन 3.3.0-alpha05

20 मार्च, 2024

androidx.paging:paging-*:3.3.0-alpha05 रिलीज़ हो गया है. वर्शन 3.3.0-alpha05 में ये कमिट मौजूद हैं.

एपीआई में किए गए बदलाव

  • पेजिंग में, अब सामान्य कोड के लिए AndroidX एनोटेशन @MainThread एनोटेशन का इस्तेमाल किया जाता है. (I78f0d, b/327682438)

वर्शन 3.3.0-alpha04

6 मार्च, 2024

androidx.paging:paging-*:3.3.0-alpha04 रिलीज़ हो गया है. वर्शन 3.3.0-alpha04 में ये कमिट मौजूद हैं.

गड़बड़ियां ठीक की गईं

  • Kotlin मल्टीप्लैटफ़ॉर्म के साथ काम करने की सुविधा के साथ काम करने से जुड़ी, दस्तावेज़ों की छोटी-मोटी गड़बड़ियों को ठीक किया गया है. (aosp/2950785)

वर्शन 3.3.0-alpha03

7 फ़रवरी, 2024

androidx.paging:paging-*:3.3.0-alpha03 रिलीज़ हो गया है. वर्शन 3.3.0-alpha03 में ये कमियां हैं.

नई सुविधाएं

  • PagingDataPresenter अब एक सार्वजनिक क्लास है. इंटरनल पेजिंग एपीआई या paging-runtime के AsyncPagingDataDiffer की ज़रूरत नहीं, बल्कि अब PagingDataPresenter के साथ मल्टीप्लैटफ़ॉर्म प्रज़ेंटर बनाए जा सकते हैं. (Id1f74, b/315214786)
  • LoadStates, गड़बड़ी की स्थिति में है या NotLoading की स्थिति में है, यह देखने के लिए LoadStates और CombinedLoadStates हेल्पर तरीके जोड़े गए. साथ ही, एक नया एपीआई भी जोड़ा गया है, जो लोड को NotLoading या गड़बड़ी की स्थिति में सेटल होने तक, LoadStateFlow पर इंतज़ार करता है. (Id6c67)

व्यवहार में बदलाव

  • जब तक कस्टम LoadStates को कंस्ट्रक्टर के पास नहीं भेजा जाता, तब तक PagingData.empty(), डिफ़ॉल्ट रूप से NotLoading स्टेट को डिस्पैच करता है. यह मौजूदा व्यवहार से अलग होता है, जहां यह PagingDataAdapter को सबमिट किए जाने पर LoadStates को नहीं भेजता या LazyPagingItems के तौर पर इकट्ठा किए जाने पर लोडिंग स्टेटस को डिस्पैच करता है. LazyPagingItems के रूप में इकट्ठा किए जाने पर, अब वह शुरुआती कंपोज़िशन के तुरंत बाद एक खाली सूची भी दिखाएगा. (I4d11d, b/301833847)

वर्शन 3.3.0-alpha02

20 सितंबर, 2023

androidx.paging:paging-*:3.3.0-alpha02 रिलीज़ हो गया है. वर्शन 3.3.0-alpha02 में ये कमियां हैं.

Kotlin की मल्टीप्लैटफ़ॉर्म के साथ काम करने की सुविधा

पेजिंग के लिए, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट भेजे जा सकते हैं. साथ ही, CashApp के मल्टीप्लैटफ़ॉर्म-पेजिंग प्रोजेक्ट से अपस्ट्रीम काम के लिए, काफ़ी धन्यवाद. इससे हमें डेटा स्टोर करने की दो जगहों के बीच के अंतर से बचने और उन्हें एक-दूसरे के साथ काम करने में मदद मिलेगी.

  • paging-common ने सभी पेजिंग 3 एपीआई को common में भेज दिया है. अब यह Android के साथ-साथ, jvm और iOS के साथ भी काम करता है.
  • paging-testing ने अपने कोड को common पर भेज दिया है. अब यह Android के साथ-साथ, jvm और iOS के साथ भी काम करता है.
  • paging-compose ने अपने कोड को common पर भेज दिया है. साथ ही, यह एक ऐसा Android आर्टफ़ैक्ट भेजता है जो मल्टीप्लैटफ़ॉर्म की सुविधा से androidx.compose की मदद से मेल खाता है.
  • paging-runtime, paging-guava, paging-rxjava2, और paging-rxjava3 सिर्फ़ Android पर उपलब्ध रहेंगे.

एपीआई में किए गए बदलाव

  • सिर्फ़ अंदरूनी इस्तेमाल के लिए बनाए गए सार्वजनिक लॉगर इंटरफ़ेस को बंद कर दिया गया है (I16e95, b/288623117)

बाहरी योगदान

वर्शन 3.3.0-alpha01

20 सितंबर, 2023

  • यह androidx.paging लाइब्रेरी की पहली मल्टीप्लैटफ़ॉर्म रिलीज़ है. इस वर्शन में सिर्फ़ *-jvm और *-android आर्टफ़ैक्ट हैं. macOS, iOS, और Linux के वैरिएंट के लिए, 3.3.0-alpha02 का इस्तेमाल करें.

वर्शन 3.2

वर्शन 3.2.1

6 सितंबर, 2023

androidx.paging:paging-*:3.2.1 रिलीज़ हो गया है. वर्शन 3.2.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से पेजिंग टेस्टिंग आर्टफ़ैक्ट का asSnapshot() एपीआई, PagingData.from(List) का इस्तेमाल करके बनाए गए फ़्लो को पास करने पर अटक सकता है, क्योंकि asSnapshot() लोड होने के बाद (PagingData.from(List, LoadStates) ओवरलोड के उलट) कोई जानकारी नहीं देता. यह समाधान सिर्फ़ पूरे हो चुके फ़्लो (उदाहरण के लिए, flowOf(PagingData.from(...))) के लिए काम करता है. पूरे नहीं होने वाले फ़्लो के लिए (उदाहरण के लिए, MutableStateFlow, LoadStates देने वाले PagingData.from ओवरलोड का इस्तेमाल करें. (I502c3)
  • पेजिंग कंपोज़ की सुविधा, अब अंदरूनी तौर पर AndroidUiDispatcher.Main का इस्तेमाल करती है. इससे यह पक्का किया जाता है कि नया डेटा उसी फ़्रेम में उपलब्ध हो जिस फ़्रेम में डेटा लोड हो रहा है. (Ia55af)

वर्शन 3.2.0

26 जुलाई, 2023

androidx.paging:paging-*:3.2.0 रिलीज़ हो गया है. वर्शन 3.2.0 में ये कमियां शामिल हैं.

3.1.0 के बाद के अहम बदलाव

  • पेजिंग कंपोज़, एपीआई की स्थिरता तक पहुंच गया है. इसे पेजिंग के बाकी सभी वर्शन में वापस मर्ज कर दिया गया है, क्योंकि अब इसका वर्शन बाकी सभी पेजिंग आर्टफ़ैक्ट से मेल खाता है. 3.1.0 के बाद के बदलावों में ये शामिल हैं:
    • PagingData.from(fakeData) बनाकर और उस PagingData को किसी MutableStateFlow (जैसे कि MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) में रैप करके नकली डेटा की सूची की झलक देखने की सुविधा. झलक देखने के लिए, इस फ़्लो को collectAsLazyPagingItems() के लिए, रिसीवर के तौर पर @Preview कंपोज़ेबल में पास करें.
    • LazyVerticalGrid और HorizontalPager जैसे सभी लेज़ी लेआउट के साथ-साथ, Wear और TV लाइब्रेरी के कस्टम लेज़ी कॉम्पोनेंट के साथ काम करता है. यह काम, नए निचले लेवल LazyPagingItems एक्सटेंशन के तरीकों itemKey और itemContentType से किया गया है. इससे आपको LazyColumn और LazyVerticalGrid के लिए पहले से मौजूद स्टैंडर्ड items एपीआई में key और contentType पैरामीटर लागू करने में मदद मिलती है. साथ ही, HorizontalPager जैसे एपीआई में इनके मिलते-जुलते एपीआई भी लागू किए जा सकते हैं.
    • सिर्फ़ LazyListScope के साथ काम करने वाले items(lazyPagingItems) और itemsIndexed(lazyPagingItems) अब काम नहीं करते.
  • नया paging-testing आर्टफ़ैक्ट, जो आपके ऐप्लिकेशन की हर लेयर की यूनिट की जांच करने के लिए डिज़ाइन किए गए एपीआई उपलब्ध कराता है. साथ ही, इसमें पेजिंग के साथ अलग-अलग इंटिग्रेशन की सुविधा भी मिलती है. उदाहरण के लिए, इसमें ये चीज़ें शामिल हैं
    • TestPager क्लास, जो आपको पेजर और असल यूज़र इंटरफ़ेस (यूआई) से अलग, अपनी पसंद के मुताबिक PagingSource लागू करने के व्यवहार की पुष्टि करने की अनुमति देती है.
    • asPagingSourceFactory एपीआई, Flow<List<Value>> या स्टैटिक List<Value> को PagingSourceFactory में बदलने के लिए, जिसे जांच के दौरान किसी पेजर को भेजा जा सके
    • asSnapshot Flow<PagingData<Value>> पर Kotlin एक्सटेंशन, जो Flow<PagingData<Value>> को डायरेक्ट List<Value> में बदल देता है. asSnapshot lambda आपको scrollTo या appendScrollWhile जैसे एपीआई की मदद से, अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) की नकल करने की अनुमति देता है. इससे यह पुष्टि की जा सकती है कि पेज पर मौजूद डेटा के सेट में, डेटा का स्नैपशॉट सही है या नहीं.
  • पेजिंग डीबगिंग जानकारी को दो स्तर में दिखाने के लिए डिफ़ॉल्ट लॉग जोड़ा गया: VERBOSE और DEBUG. adb shell setprop log.tag.Paging [DEBUG|VERBOSE] निर्देश के ज़रिए लॉग चालू किए जा सकते हैं. यह व्यू के साथ पेजिंग या कंपोज़ की मदद से पेजिंग, दोनों पर लागू होता है.
  • PagingDataAdapter और AsyncPagingDataDiffer के लिए कंस्ट्रक्टर जोड़े गए, जो CoroutineDispatcher के बजाय CoroutineContext स्वीकार करते हैं.
  • नया PagingSourceFactory फ़ंक्शन वाला इंटरफ़ेस जोड़ा गया, जो पिछले () -> की तुलना में ज़्यादा साफ़ तौर पर एपीआई सरफ़ेस उपलब्ध कराता है PagingSource लैम्डा. किसी पेजर को इंस्टैंशिएट करने के लिए, इस फ़ैक्ट्री का इस्तेमाल किया जा सकता है.

वर्शन 3.2.0-rc01

21 जून, 2023

androidx.paging:paging-*:3.2.0-rc01 रिलीज़ हो गया है. वर्शन 3.2.0-rc01 में ये कमिट हैं.

बाहरी योगदान

  • Android/JVM के एट्रिब्यूट से पेजिंग हटाने में योगदान देने के लिए, वेंडन का धन्यवाद. (#553, #554, #555, #559)

वर्शन 3.2.0-beta01

7 जून, 2023

androidx.paging:paging-*:3.2.0-beta01 रिलीज़ हो गया है. वर्शन 3.2.0-beta01 में ये तय किए गए हिस्से शामिल हैं.

पेज पर लिखना

  • Paging Compose, एपीआई की स्थिरता तक आधिकारिक तौर पर पहुंच गया है. इसलिए, वर्शन को 1.0.0-alpha20 से अपडेट कर दिया गया है, ताकि वह पेजिंग वाले अन्य सभी आर्टफ़ैक्ट के वर्शन से मेल खाए.

एपीआई में किए गए बदलाव

वर्शन 3.2.0-alpha06

24 मई, 2023

androidx.paging:paging-*:3.2.0-alpha06 रिलीज़ हो गया है. वर्शन 3.2.0-alpha06 में ये कमियां हैं.

नई सुविधाएं

  • PagingSourceFactory नया फ़ंक्शनल इंटरफ़ेस जोड़ा गया है, जो मौजूदा () -> PagingSource lambdas की तुलना में ज़्यादा साफ़ तौर पर एपीआई सरफ़ेस उपलब्ध कराता है. Pager को इंस्टैंशिएट करने के लिए, इस फ़ैक्ट्री का इस्तेमाल किया जा सकता है. (I33165, b/280655188)
  • PagingSourceFactory पाने के लिए List<Value>.asPagingSourceFactory() का नया paging-testing एपीआई जोड़ा गया, जो सिर्फ़ डेटा की ऐसी सूची से लोड होता है जिसमें बदलाव नहीं किया जा सकता. Flow<List<Value>> पर मौजूद मौजूदा एक्सटेंशन का इस्तेमाल, अब भी एक से ज़्यादा जनरेशन के स्टैटिक डेटा के साथ टेस्ट करने के लिए किया जाना चाहिए. (Id34d1, b/280655188)

एपीआई में किए गए बदलाव

  • पेजिंग-टेस्टिंग में सभी सार्वजनिक एपीआई को अब @VisibleForTesting के साथ एनोटेट किया जाता है, ताकि यह पक्का किया जा सके कि इन एपीआई का इस्तेमाल सिर्फ़ जांच में किया जाए. (I7db6e)
  • asSnapshot एपीआई को अब CoroutineScope में पास होना ज़रूरी नहीं है. अब इसमें डिफ़ॉल्ट रूप से, पैरंट स्कोप से इनहेरिट किए गए कॉन्टेक्स्ट का इस्तेमाल किया जाता है. (Id0a78, b/282240990)
  • TestPager कंस्ट्रक्टर पैरामीटर को फिर से क्रम में लगाया गया, ताकि वह Pager कंस्ट्रक्टर पैरामीटर (I6185a) के क्रम से आसानी से मैच कर सके
  • PagingSourceFactory<Key, Value> टाइप करने के लिए पेजिंग-टेस्टिंग का लैम्डा प्रकार () -> PagingSource<Key, Value> का इस्तेमाल माइग्रेट किया गया. (I4a950, b/280655188)

व्यवहार में बदलाव

  • asSnapshot पेजिंग परीक्षण चलाने के लिए अब मुख्य डिसपैचर की ज़रूरत नहीं है. इसे सेट करने से, जांच के व्यवहार में कोई बदलाव नहीं होता. (Ie56ea)

वर्शन 3.2.0-alpha05

3 मई, 2023

androidx.paging:paging-*:3.2.0-alpha05 रिलीज़ हो गया है. वर्शन 3.2.0-alpha05 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • asSnapshot का पेजिंग टेस्टिंग एपीआई अब अपने loadOperations पैरामीटर को डिफ़ॉल्ट तौर पर खाली Lambda फ़ंक्शन पर सेट कर देता है. इससे शुरुआती रीफ़्रेश लोड से डेटा वापस पाने के लिए, लोड करने की कोई भी कार्रवाई पास किए बिना asSnapshot को कॉल किया जा सकता है. (Ied354, b/277233770)

दस्तावेज़ को बेहतर बनाने के बारे में जानकारी

  • asPagingSourceFactory() के दस्तावेज़ अपडेट किए गए, ताकि साफ़ तौर पर बताया जा सके कि यह Flow पर एक्सटेंशन का तरीका है. यह PagingSource इंस्टेंस जनरेट करने के लिए, फिर से इस्तेमाल की जा सकने वाली फ़ैक्ट्री दिखाता है. (I5ff4f, I705b5)
  • LoadResult.Pageकंस्ट्रक्टर के दस्तावेज़ अपडेट किए गए हैं, ताकि जंपिंग की सुविधा के लिए itemsBefore और itemsAfter को बदलने की ज़रूरत के बारे में साफ़ तौर पर बताया जा सके. (Ied354)

बाहरी योगदान

वर्शन 3.2.0-alpha04

8 फ़रवरी, 2023

androidx.paging:paging-*:3.2.0-alpha04 रिलीज़ हो गया है. वर्शन 3.2.0-alpha04 में ये कमियां हैं.

पेजिंग टेस्टिंग

  • paging-testing आर्टफ़ैक्ट में अब एक asPagingSourceFactory तरीका शामिल है. इसकी मदद से, Flow<List<Value>> से pagingSourceFactory बनाया जा सकता है, जो किसी पेजर को दिया जाएगा. फ़्लो से निकलने वाला हर List<Value>>, पेज किए गए डेटा के जनरेशन को दिखाता है. इससे पेजिंग टेस्ट को आसान बनाने में मदद मिलती है. उदाहरण के लिए, PagingData ट्रांसफ़ॉर्मेशन ऐक्शन के लिए ऐसा डेटा सोर्स फ़ेक करना जिसे पेजर से इकट्ठा करना हो. (I6f230, b/235528239)
  • paging-testing आर्टफ़ैक्ट को नए एपीआई के साथ बड़ा किया गया है, जो इस बात की पुष्टि करने के लिए सही हैं कि Flow<PagingData<T>> में मौजूद डेटा सही है या नहीं. उदाहरण के लिए, इसका इस्तेमाल आपके ViewModel लेयर से Flow<PagingData<T>> के आउटपुट का दावा करने के लिए किया जा सकता है.

    ऐसा Flow<PagingData<Value>> पर asSnapshot Kotlin एक्सटेंशन के ज़रिए किया जाता है, जो Flow<PagingData<Value>> को डायरेक्ट List<Value> में बदल देता है. asSnapshot lambda की मदद से, scrollTo या appendScrollWhile जैसे एपीआई की मदद से, अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) की नकल की जा सकती है. ऐसा, बार-बार और एक जैसा तरीके से किया जा सकता है, ताकि आप यह पुष्टि कर सकें कि पेज पर मौजूद डेटा के सेट में, डेटा का स्नैपशॉट सही है.

    // 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 एक suspend तरीका है, जिसे runTest में चलने की उम्मीद है. ज़्यादा जानकारी के लिए, Android पर Kotlin कोरूटीन की जांच करना देखें. (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4बाबा, Ib29b9, Ib29b9, Ib29b9}26

एपीआई में किए गए बदलाव

  • AsyncPagingDataDiffer और PagingDataAdapter में, getItem और peek को किए जाने वाले यूज़र इंटरफ़ेस (यूआई) कॉल को अब सही तरीके से, 'सिर्फ़ मुख्य थ्रेड पर कॉल करने लायक' के तौर पर मार्क किया गया है. (I699b6)
  • TestPager में इस्तेमाल किए जाने वाले सामान्य टाइप से वाइल्डकार्ड हटा दिए गए हैं. इससे Java प्रोग्रामिंग भाषा में लिखे गए कोड में, उन तरीकों के नतीजों को आसानी से इस्तेमाल किया जा सकता है. (I56c42)

वर्शन 3.2.0-alpha03

24 अक्टूबर, 2022

androidx.paging:paging-*:3.2.0-alpha03 रिलीज़ हो गया है. वर्शन 3.2.0-alpha03 में ये कमियां हैं.

पेजिंग टेस्टिंग

इस रिलीज़ में एक नया आर्टफ़ैक्ट शामिल है: paging-testing. यह आर्टफ़ैक्ट आपके ऐप्लिकेशन की हर लेयर की यूनिट की जांच करने और पेजिंग के साथ इसके इंटिग्रेशन के लिए डिज़ाइन किए गए एपीआई उपलब्ध कराता है.

उदाहरण के लिए, इस पहली रिलीज़ में एक TestPager क्लास शामिल है. यह आपको Pager और असल यूज़र इंटरफ़ेस (यूआई) से अलग, अपनी पसंद के मुताबिक PagingSource लागू करने के व्यवहार की पुष्टि करने की अनुमति देती है. आम तौर पर, आपको एंड-टू-एंड पेजिंग इंटिग्रेशन को सिम्युलेट करना पड़ता है.

TestPager को नकली - टेस्ट डबल माना जाना चाहिए, जो PagingSource की जांच के लिए एपीआई प्लैटफ़ॉर्म की मदद से, Pager को लागू करने की असल प्रोसेस दिखाता है. ये एपीआई suspend के एपीआई हैं. इन्हें Android पर Kotlin कोरूटीन की जांच करने की गाइड में बताए गए तरीके के मुताबिक, runTest के अंदर चलाया जाना चाहिए.

इस्तेमाल किए जा रहे इन एपीआई का उदाहरण, room-paging टेस्ट में मिल सकता है. इन टेस्ट को TestPager का इस्तेमाल करने के लिए, फिर से किया गया.

एपीआई में किए गए बदलाव

  • LoadResult.Page.data से LoadResult.Page.iterator() तक सुविधाजनक इटरेशन को सक्षम करता है. List<LoadResult.Page> दिए जाने पर, यह सीधे तौर पर Kotlin की स्टैंडर्ड लाइब्रेरी flatten तरीके के इस्तेमाल की अनुमति देता है, जैसे कि PagingState की pages प्रॉपर्टी के साथ जो PagingSource.getRefreshKey तरीके को पास की जाती है. (Ie0718)

वर्शन 3.2.0-alpha02

10 अगस्त, 2022

androidx.paging:paging-*:3.2.0-alpha02 रिलीज़ हो गया है. वर्शन 3.2.0-alpha02 में ये कमियां हैं.

नई सुविधाएं

  • पेजिंग अब AsyncPagingDataDifferया PagingDataAdapter क्लास के ज़रिए लॉग उपलब्ध कराता है, ताकि PagingData से इकट्ठा की गई डीबग करने की जानकारी दिखाई जा सके.
  • adb shell कमांड adb shell setprop log.tag.Paging [DEBUG|VERBOSE].(b/235527159) के ज़रिए लॉग चालू किए जा सकते हैं

गड़बड़ियां ठीक की गईं

  • paging-runtime:3.1.1 या उससे पुराने रनटाइम के साथ paging-common:3.2.0-alpha01 का इस्तेमाल करने पर, PagingDataDiffer कंस्ट्रक्टर की गड़बड़ी ठीक कर दी गई है.(b/235256201)

वर्शन 3.2.0-alpha01

1 जून, 2022

androidx.paging:paging-*:3.2.0-alpha01 रिलीज़ हो गया है. वर्शन 3.2.0-alpha01 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • PagingDataAdapter और AsyncPagingDataDiffer के लिए कंस्ट्रक्टर जोड़े गए, जो CoroutineDispatcher के बजाय CoroutineContext स्वीकार करते हैं. (Idc878)
  • डिफ़ॉल्ट रूप से, PagingData.from() और PagingData.empty() प्रज़ेंटर की ओर से CombinedLoadStates को प्रभावित नहीं करेंगे. इन कंस्ट्रक्टर में sourceLoadStates और remoteLoadStates को पास करने की अनुमति देने वाला एक नया ओवरलोड जोड़ा गया है, ताकि LoadStates सेटिंग को पूरी तरह से टर्मिनल के तौर पर सेट करने के मौजूदा व्यवहार को बनाए रखा जा सके (यानी, NotLoading(endOfPaginationReached = false)) के साथ, ज़रूरत पड़ने पर दूर-दराज़ के राज्यों को भी शामिल करने का विकल्प होगा. अगर LoadStates को पास नहीं किया जाता है, तो प्रज़ेंटर की ओर से पिछले CombinedLoadStates को बनाए रखा जाएगा. ऐसा तब होता है, जब उसे स्टैटिक PagingData मिलता है. (Ic3ce5, b/205344028)

गड़बड़ियां ठीक की गईं

  • PagingSource.getRefreshKey() के नतीजे को अब ऐसे मामलों में initialKey से ज़्यादा प्राथमिकता दी जाती है जहां यह शून्य के तौर पर दिखता है, लेकिन एक गैर-शून्य initialKey सेट किया गया था. (Ic9542, b/230391606)

बाहरी योगदान

  • Test-coroutines-lib माइग्रेशन (I3366d) की वजह से :compos:ui:ui-test api (updateApi) को अपडेट किया गया

वर्शन 3.1

वर्शन 3.1.1

9 मार्च, 2022

androidx.paging:paging-*:3.1.1 रिलीज़ हो गया है. वर्शन 3.1.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • .cachedIn() की ओर से गलत तरीके से शामिल की गई जनरेशन के बीच के LoadState.NotLoading इवेंट हटाए गए. इस बदलाव की मदद से, LoadState में किए गए बदलावों पर आसानी से प्रतिक्रिया दी जा सकती है. ऐसा करने के लिए, रीफ़्रेश करने या अमान्य होने के दौरान, ऐसे LoadState.NotLoading इवेंट हटा दिए जाते हैं जो फिर से कोशिश करने की कोशिश के दौरान हुए थे.

वर्शन 3.1.0

17 नवंबर, 2021

androidx.paging:paging-*:3.1.0 रिलीज़ हो गया है. वर्शन 3.1.0 में ये कमियां शामिल हैं.

3.0.0 के बाद के अहम बदलाव

  • Flow<PagingData>.observable और Flow<PagingData>.flowable एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं
  • LoadState के व्यवहार में बदलाव:
    • PagingSource और RemoteMediator, दोनों के लिए endOfPaginationReached अब LoadType.REFRESH के लिए हमेशा false पर सेट है
    • पेजिंग से LoadStates को डाउनस्ट्रीम निकालने से पहले, PagingSource और RemoteMediator दोनों से मान्य मान मिलने का इंतज़ार है. PagingData की नई जनरेशन अब कुछ मामलों में गलत तरीके से NotLoading पर रीसेट करने के बजाय रीफ़्रेश स्थिति के लिए हमेशा Loading से सही तरीके से शुरू होगी.
    • प्रज़ेंटर एपीआई पर .loadStateFlow और .addLoadStateListener अब अतिरिक्त तरीके से शुरुआती CombinedLoadStates नहीं भेजते हैं, जिसमें हमेशा मीडिएटर की स्थितियां null पर सेट होती हैं
  • पिछली पीढ़ियों के लिए रद्द करने की प्रक्रिया, अब अमान्य / नई पीढ़ियों पर तेज़ी से रद्द की जाती है. अब Flow<PagingData> पर .collectLatest का इस्तेमाल करने की ज़रूरत नहीं होनी चाहिए. हालांकि, अब भी ऐसा करने का सुझाव दिया जाता है.
  • PagingSource.load से PagingSource.LoadResult.Invalid को वापस करने के नए टाइप के तौर पर जोड़ा गया है. इस वजह से पेजिंग, इस PagingSource पर किए गए सभी बकाया या आने वाले समय में लोड करने के अनुरोधों को खारिज कर देगा और इसे अमान्य कर देगा. रिटर्न टाइप को ऐसे संभावित रूप से अमान्य या पुराने डेटा को मैनेज करने के लिए डिज़ाइन किया गया है जिसे डेटाबेस या नेटवर्क से लौटाया जा सकता है.
  • .onPagesPresented और .addOnPagesUpdatedListener प्रज़ेंटर एपीआई जोड़ा गया, जो यूज़र इंटरफ़ेस (यूआई) में पेज दिखाए जाने पर सिंक्रोनस रूप से ट्रिगर हो गया. इन स्थितियों में पेज अपडेट हो सकते हैं:
    • PagingData की नई जनरेशन का शुरुआती लोड पूरा हो जाता है. इस बात से कोई फ़र्क़ नहीं पड़ता कि नई जनरेशन में पेश किए गए आइटम में कोई बदलाव हुआ है या नहीं. उदाहरण के लिए, नई जनरेशन, शुरुआती लोड को पूरा कर रही है. इसमें कोई अपडेट नहीं है, क्योंकि सूची बिलकुल वही है जो अब भी इस कॉलबैक को ट्रिगर करेगी.
    • भले ही, शामिल किए गए पेज में कोई नया आइटम न हो, तब भी पेज शामिल किया जाता है.
    • पेज को छोड़ दिया गया है, भले ही वह पेज खाली हो.

वर्शन 3.1.0-rc01

3 नवंबर, 2021

androidx.paging:paging-*:3.1.0-rc01 रिलीज़ हो गया है. वर्शन 3.1.0-rc01 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • .cachedIn() में रेस कंडिशन और मेमोरी लीक को ठीक करने का तरीका जब डाउनस्ट्रीम को पेजिंग करके कई लोड इवेंट भेजे गए थे, जबकि कोई ऑब्ज़र्वर नहीं था या जब कोई ऑब्ज़र्वर किसी नए PagingData पर स्विच कर रहा था, तब इस बीच में या उसके बीच में ही रेस कंडीशन थी. (Ib682e)

वर्शन 3.1.0-beta01

13 अक्टूबर, 2021

androidx.paging:paging-*:3.1.0-beta01 रिलीज़ हो गया है. वर्शन 3.1.0-beta01 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जहां आइटम को तेज़ी से ऐक्सेस करने की वजह से, प्रीफ़ेच की वजह से पेज को लोड होने से रोका जा सकता है. इससे पेज लोड रुक जाते हैं. खास तौर पर, ऐसा तब होता है, जब एक साथ कई आइटम एक क्रम में लगाए जाते हैं और उपयोगकर्ता स्क्रोल करने की दिशा में लोड होने को प्राथमिकता देते हैं. आइटम के इन ऐक्सेस को अब बफ़र किया गया है और सिंक्रोनस तरीके से प्राथमिकता दी गई है, ताकि इन्हें हटाए जाने से रोका जा सके. (aosp/1833273)

वर्शन 3.1.0-alpha04

29 सितंबर, 2021

androidx.paging:paging-*:3.1.0-alpha04 रिलीज़ हो गया है. वर्शन 3.1.0-alpha04 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • Flow<PagingData>.observable और Flow<PagingData>.flowable एपीआई अब प्रयोग के तौर पर नहीं हैं. (Ie0bdd)

गड़बड़ियां ठीक की गईं

  • LoadStates के लिए, endOfPaginationReached अब हमेशा false होती है LoadType.REFRESH के लिए. पहले, यह सुविधा RemoteMediator REFRESH के लिए endOfPaginationReach true तक पहुंचा, लेकिन नहीं पेजिंगसोर्स के लिए. इस व्यवहार को अब हमेशा के लिए वापस लौटाने के लिए एक साथ कर दिया गया है false, क्योंकि REFRESH को टर्मिनल बनाना सही नहीं था और अब है LoadStates में एपीआई कॉन्ट्रैक्ट के हिस्से के तौर पर दर्ज किया जाता है. यह तय करते समय कि पेज पर नंबर डालना बंद कर दिया है, तो आपको ऐसा हमेशा करना चाहिए जोड़ने के दिशा-निर्देशों का पालन करें. (I047b6)
  • पेजिंग से LoadStates को अब दोनों के मान्य वैल्यू का इंतज़ार है PagingSource और RemoteMediator के बीच डाउनस्ट्रीम उत्सर्जित करने से पहले पीढ़ियों. यह PagingData की नई जनरेशन को रोकता है अगर यह पहले से ही मौजूद था, तो कॉम्बिनेशनedLoadStates.source.refresh में NotLoading होने की सुविधा लोड हो रहा है; PagingData की नई जनरेशन अब हमेशा सही तरीके से शुरू होगी पहले NotLoading पर रीसेट करने के बजाय रीफ़्रेश स्थिति के लिए लोड होने के साथ भी दी गई जानकारी सही नहीं है.

    पिछली पीढ़ियों से सदस्यताएं रद्द करने की प्रक्रिया, अमान्य हो जाने पर बड़े पैमाने पर होती है / नई पीढ़ियां. इसके लिए, अब .collect ट्रेंड का इस्तेमाल करने की ज़रूरत नहीं होगी Flow<PagingData> पर, हालांकि ऐसा करने का अब भी सुझाव दिया जाता है. (I0b2b5, b/177351336, b/195028524)

  • प्रज़ेंटर एपीआई पर .loadStateFlow और .addLoadStateListener अब ग़ैर-ज़रूरी तौर पर, शुरू में CombinedLoadStates नहीं भेजना होगा जो हमेशा इसमें मीडिएटर स्टेट को null और सोर्स स्टेट को null पर सेट किया गया है NotLoading(endOfPaginationReached = false). इसका मतलब है कि:

    1. RemoteMediator का इस्तेमाल करने पर, मीडिएटर स्टेट की जानकारी हमेशा अपने-आप भर जाएगी.
    2. नयाloadState लिसनर या नया कलेक्टर रजिस्टर करें .loadStateFlow से अब मौजूदा वैल्यू तुरंत नहीं निकलेगी अगर उसे असली CombinedLoadStates नहीं मिले हैं PagingData. ऐसा तब हो सकता है, जब कलेक्टर या लिसनर PagingData सबमिट करने से पहले. (I1a748)

वर्शन 3.1.0-alpha03

21 जुलाई, 2021

androidx.paging:paging-*:3.1.0-alpha03 रिलीज़ हो गया है. वर्शन 3.1.0-alpha03 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • एक तीसरा Loadresults रिटर्न टाइप, Loadresults.अमान्य के साथ जोड़ा गया पेजिंगसोर्स. जब PagingSource.load वापस लौटता है Loadresults.अमान्य है, पेजिंग से लोड किया गया डेटा खारिज हो जाएगा और PagingSource को अमान्य करें. रिटर्न टाइप को इस तरह से डिज़ाइन किया गया है कि ऐसे डेटा को हैंडल करना जो अमान्य हो सकता है या पुराना हो सकता है. का डेटा इकट्ठा किया जा सकता है.

    उदाहरण के लिए, अगर डेटाबेस में मौजूद PagingSource समय पर अमान्य नहीं होता है, लेकिन यह वापस आ सकता है असंगत परिणाम यदि इसे लागू करना जिस बैकिंग डेटासेट से वह लोड होता है उसमें बदलाव नहीं किया जा सकता (उदाहरण के लिए, LIMIT OFFSET स्टाइल db को लागू करने का तरीका). इस स्थिति में, यह लोड करने के बाद अमान्य होने की जांच करने और रिटर्न Loadresults.अमान्य है, जिसकी वजह से पेजिंग किसी भी वैल्यू को खारिज कर देती है इस पेजिंगसोर्स पर लोड करने के अनुरोध बाकी हैं या आने वाले समय में लोड होने वाले हैं और अमान्य कर दें.

    यह रिटर्न टाइप Paging2 API के साथ भी काम करता है जो LivePagedList या RxPagedList. PagingSource का इस्तेमाल करते समय Paging2 के PagedList API का इस्तेमाल करते हैं, तो PagedList तुरंत डिटैच हो जाता है, इस PagedList पर डेटा को लोड करने की कोशिशों को रोकना और PagingSource पर अमान्य वैल्यू ट्रिगर करता है.

    Loadresults, सील की गई क्लास है. इसका मतलब है कि यह सोर्स के साथ काम न करने वाला बदलाव, जैसे कि इस्तेमाल के उदाहरण: PagingSource.load के नतीजों में, Loadresults.अमान्य तरीके को मैनेज करना होगा इकट्ठा करने के दौरान. उदाहरण के लिए, Kotlin के उपयोगकर्ता इन पूरी जानकारी दें-जांच कब करें, रिटर्न टाइप में चेक जोड़ना होगा अमान्य प्रकार के लिए. (Id6bd3, b/191806126, b/192013267)

गड़बड़ियां ठीक की गईं

  • अमान्य होने पर कॉलबैक इसके ज़रिए जोड़े गए PagingSource.registerअमान्यCallback या अगर वे PagingSource / DataSource पर रजिस्टर किए गए हों अमान्य. यह उस रेस कंडिशन को ठीक करता है जिसकी वजह से पेजिंग रुक गई थी अमान्य होने के संकेत मिलते हैं और वे स्रोत उपलब्ध कराए जाने पर अटक जाते हैं जो शुरुआती लोड के दौरान पहले से अमान्य. इसके अलावा, अमान्य करें ट्रिगर किए जाने के बाद कॉलबैक, सही तरीके से हट जाते हैं, क्योंकि इस बात की गारंटी है कि ज़्यादा से ज़्यादा एक बार कॉल किया जाएगा. (I27e69)
  • नई इंस्टैंशिएट की गई PagedList स्ट्रीम से प्लेसहोल्डर की शुरुआती वैल्यू (InitialPagedList) सबमिट करना, उदाहरण के लिए, LivePagedListBuilder या RxPagedListBuilder अब पहले से लोड किए गए डेटा को नहीं हटा सकते.

वर्शन 3.1.0-alpha02

1 जुलाई, 2021

androidx.paging:paging-*:3.1.0-alpha02 रिलीज़ हो गया है. वर्शन 3.1.0-alpha02 में ये कमियां हैं.

नई सुविधाएं

  • onPagesप्रज़ेंट लिसनर और फ़्लो प्रज़ेंटर एपीआई जोड़ा गया जो यूज़र इंटरफ़ेस (यूआई) में, पेश किए गए पेजों के अपडेट होने के तुरंत बाद ट्रिगर होते हैं.

    ये अपडेट, यूज़र इंटरफ़ेस (यूआई) के साथ सिंक होते हैं. इसलिए, अडैप्टर का इस्तेमाल करके दूसरे तरीकों को कॉल किया जा सकता है जैसे कि .snowshot, .getItemCount, ताकि अपडेट लागू कर दिया गया है. ध्यान दें कि .sSnapshot() को क्योंकि हर अपडेट पर काम करना महंगा हो सकता है.

    इन स्थितियों में पेज अपडेट हो सकते हैं:

    • PagingData की नई जनरेशन के शुरुआती लोड को पूरा किया गया, भले ही, नई जनरेशन में पेश किए गए आइटम. उदाहरण के लिए, शुरुआती लोड पूरा करने वाली नई जनरेशन सूची में कोई अपडेट नहीं है, क्योंकि सूची वही है जो अब भी इस कॉलबैक को ट्रिगर करें.
    • एक पेज शामिल किया गया है, भले ही शामिल किए गए पेज में कोई नया पेज न हो आइटम
    • किसी पेज को हटा दिया गया हो, भले ही वह पेज खाली हो (I272c9, b/189999634)

गड़बड़ियां ठीक की गईं

  • तैयार की गई शुरुआती वैल्यू से PagedList.dataSource को ऐक्सेस करना LivePagedList या RxPagedList पर गैर-कानूनी राज्य अपवाद (I96707)

वर्शन 3.1.0-alpha01

2 जून, 2021

androidx.paging:paging-*:3.1.0-alpha01 रिलीज़ हो गया है. वर्शन 3.1.0-alpha01 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • paging-rxjava3 की ओर से दी गई क्लास अब androidx.paging.rxjava3 पैकेज, ताकि इनके साथ कोई टकराव न हो paging-rxjava2 (Ifa7f6)

गड़बड़ियां ठीक की गईं

  • पेजिंग से जुड़ी समस्या ठीक की गई है, जिसकी वजह से कभी-कभी पेज पर काम न करने की वजह से अलग RecyclerView के लिए इवेंट का इस्तेमाल करना, जिससे कुछ लिसनर ट्रिगर हो सकते हैं समय से पहले. (Ic507f, b/182510751)

बाहरी योगदान

  • rxjava3 आर्टफ़ैक्ट (Id1ce2, b/182497591) में काम न करने वाले PagedList compat API को जोड़ा गया

पेजिंग कंपोज़ का वर्शन 1.0.0

वर्शन 1.0.0-alpha20

24 मई, 2023

androidx.paging:paging-compose:1.0.0-alpha20 रिलीज़ हो गया है. वर्शन 1.0.0-alpha20 में ये कमियां हैं.

नई सुविधाएं

  • पेजिंग कंपोज़ की सुविधा की मदद से, अब नकली डेटा की सूची की झलक देखी जा सकती है. इसके लिए, PagingData.from(fakeData) बनाया जाता है और उस PagingData को MutableStateFlow में रैप किया जाता है (उदाहरण के लिए, MutableStateFlow(PagingData.from(listOf(1, 2, 3)))). इस डेटा को अपने @Preview में इनपुट के तौर पर इस्तेमाल करने पर, collectAsLazyPagingItems() को किए जाने वाले कॉल की झलक LazyPagingItems की झलक दिखेगी. (I8a78d, b/194544557)

गड़बड़ियां ठीक की गईं

  • pager.flow.cachedIn से LazyPagingItems में इकट्ठा किया गया कैश मेमोरी में सेव किया गया डेटा, राज्य वापस लाने के तुरंत बाद उपलब्ध हो जाएगा. इसके लिए, एसिंक्रोनस कलेक्शन की ज़रूरत नहीं होगी. इसका मतलब है कि डेटा की स्थिति वापस आने के बाद, कैश मेमोरी में सेव किया गया डेटा, शुरुआती कंपोज़िशन के लिए तुरंत तैयार हो जाएगा. (I97a60, b/177245496)

वर्शन 1.0.0-alpha19

3 मई, 2023

androidx.paging:paging-compose:1.0.0-alpha19 रिलीज़ हो गया है. वर्शन 1.0.0-alpha19 में ये कमियां हैं.

सभी लेज़ी लेआउट के साथ काम करता है

पहले, Paging Compose की सुविधा LazyListScope पर अपने हिसाब से items और itemsIndexed एक्सटेंशन उपलब्ध कराती थी. इसका मतलब था कि आपको LazyVerticalGrid, HorizontalPager जैसे दूसरे लेज़ी लेआउट या Wear और TV लाइब्रेरी से मिलने वाले अन्य कस्टम लेज़ी लेआउट के साथ, पेजिंग कंपोज़ का इस्तेमाल करने की सुविधा नहीं मिलती थी. इस रिलीज़ का पहला अपडेट है, इस समस्या को हल करना.

ज़्यादा लेज़ी लेआउट के साथ काम करने के लिए, हमें एक अलग लेयर पर एपीआई बनाने थे - हर लेज़ी लेआउट के लिए पसंद के मुताबिक items एपीआई देने के बजाय, पेजिंग कंपोज़ अब itemKey और itemContentType में LazyPagingItems पर, थोड़े कम लेवल के एक्सटेंशन के तरीके उपलब्ध कराता है. ये एपीआई, LazyColumn और LazyVerticalGrid के लिए पहले से मौजूद स्टैंडर्ड items एपीआई के लिए, key और contentType पैरामीटर लागू करने में आपकी मदद करते हैं. साथ ही, HorizontalPager जैसे एपीआई में इनके मिलते-जुलते एपीआई भी लागू करने में आपकी मदद करते हैं. (Ifa13b, Ib04f0, b/259385813)

इसका मतलब है कि LazyVerticalGrid के साथ काम करने की सुविधा कुछ ऐसी दिखेगी:

// 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)
  }
}

इन नए API के इस्तेमाल के ज़्यादा उदाहरणों के लिए, कृपया हमारे नमूने देखें.

इन बदलावों की वजह से, LazyColumn और LazyRow के उदाहरण कुछ लाइन लंबे हो गए हैं. हालांकि, हमें लगा कि सभी लेज़ी लेआउट के एक जैसे होने की वजह से, पेजिंग कंपोज़ का इस्तेमाल करने वालों के लिए यह एक अहम फ़ैक्टर है. इसी वजह से, LazyListScope के मौजूदा एक्सटेंशन अब बंद कर दिए गए हैं. (I0c459, I92c8f, b/276989796)

एपीआई में किए गए बदलाव

  • नए एपीआई पर आसानी से माइग्रेट करने के लिए, LazyListScope पर items और itemsIndexed एक्सटेंशन फ़ंक्शन अब contentType पैरामीटर के साथ काम करते हैं. यह फ़ंक्शन, नए एपीआई पर एक जैसा काम करता है. (Ib1918, b/255283378)

डिपेंडेंसी से जुड़े अपडेट

  • Paging Compose ने अपनी डिपेंडेंसी को कंपोज़ 1.0.5 से बदलकर 1.2.1 कर दिया है. (Ib1918, b/255283378)

वर्शन 1.0.0-alpha18

8 फ़रवरी, 2023

androidx.paging:paging-compose:1.0.0-alpha18 को बिना किसी बदलाव के रिलीज़ किया गया. वर्शन 1.0.0-alpha18 में ये कमियां हैं.

वर्शन 1.0.0-alpha17

24 अक्टूबर, 2022

androidx.paging:paging-compose:1.0.0-alpha17 रिलीज़ हो गया है. वर्शन 1.0.0-alpha17 में ये कमियां हैं.

नई सुविधाएं

  • collectLazyPagingItems को कॉल करते समय, पसंद के मुताबिक बनाए गए CoroutineContext के लिए सहायता जोड़ें. (I7a574, b/243182795, b/233783862)

वर्शन 1.0.0-alpha16

10 अगस्त, 2022

androidx.paging:paging-compose:1.0.0-alpha16 रिलीज़ हो गया है. वर्शन 1.0.0-alpha16 में ये कमियां हैं.

नई सुविधाएं

  • पेजिंग अब LazyPagingItems क्लास के ज़रिए लॉग उपलब्ध कराता है, ताकि PagingData से इकट्ठा की गई डीबग करने की जानकारी को सार्वजनिक किया जा सके.
  • adb shell निर्देश adb shell setprop log.tag.Paging [DEBUG|VERBOSE] के ज़रिए लॉग चालू किए जा सकते हैं. ([b/235527159}(https://issuetracker.google.com/issues/235527159))

गड़बड़ियां ठीक की गईं

  • paging-common:3.1.1 या उससे पुराने वर्शन के साथ paging-compose:1.0.0-alpha15 का इस्तेमाल करने पर, PagingDataDiffer कंस्ट्रक्टर की गड़बड़ी ठीक कर दी गई है.(b/235256201,b/239868768)

वर्शन 1.0.0-alpha15

1 जून, 2022

androidx.paging:paging-compose:1.0.0-alpha15 रिलीज़ हो गया है. वर्शन 1.0.0-alpha15 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • PagingDataAdapter और AsyncPagingDataDiffer के लिए कंस्ट्रक्टर जोड़े गए, जो CoroutineDispatcher के बजाय CoroutineContext स्वीकार करते हैं. (Idc878)

गड़बड़ियां ठीक की गईं

  • LazyPagingItems अब LoadState.Loading रीफ़्रेश करने के लिए, शुरुआती loadState को सेट करता है. (I55043, b/224855902)

वर्शन 1.0.0-alpha14

13 अक्टूबर, 2021

androidx.paging:paging-compose:1.0.0-alpha14 रिलीज़ हो गया है. वर्शन 1.0.0-alpha14 में ये कमियां हैं.

वर्शन 1.0.0-alpha13

29 सितंबर, 2021

androidx.paging:paging-compose:1.0.0-alpha13 रिलीज़ हो गया है. वर्शन 1.0.0-alpha13 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • LazyPagingItems.snapshot() फ़ंक्शन को LazyPagingItems.itemSnapshotList प्रॉपर्टी (Ie2da8) से बदल दिया गया है
  • बहिष्कृत LazyPagingItems.getAsState() को हटा दिया गया था (Ie65e4)

वर्शन 1.0.0-alpha12

21 जुलाई, 2021

androidx.paging:paging-compose:1.0.0-alpha12 रिलीज़ हो गया है. वर्शन 1.0.0-alpha12 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • पेजिंग को LazyColumn/Row से कनेक्ट करने के लिए इस्तेमाल किए जाने वाले items(lazyPagingItems) और itemsIndexed(lazyPagingItems) अब कुंजी के पैरामीटर का विकल्प स्वीकार करते हैं. इसकी मदद से, आइटम के बारे में बताने वाली ऐसी कुंजी तय की जा सकती है जिसमें कोई बदलाव न किया जा सके. कुंजियों के बारे में ज़्यादा जानने के लिए, यहां क्लिक करें. (I7986d)
  • lazyPagingItems.getAsState(index) फ़ंक्शन अब काम नहीं करता. इसके बजाय, lazyPagingItems[index] का इस्तेमाल करें. (I086cb, b/187339372)

वर्शन 1.0.0-alpha11

30 जून, 2021

androidx.paging:paging-compose:1.0.0-alpha11 रिलीज़ हो गया है. वर्शन 1.0.0-alpha11 में ये कमियां हैं.

वर्शन 1.0.0-alpha10

2 जून, 2021

androidx.paging:paging-compose:1.0.0-alpha10 रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये कमियां हैं.

वर्शन 1.0.0-alpha09

18 मई, 2021

androidx.paging:paging-compose:1.0.0-alpha09 रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • Laज़ीPagingआइटम' itemCount और आइटम गैटर अब मॉनिटर किए जा सकते हैं. इससे इसे LazyVerticalGrid के साथ भी इस्तेमाल किया जा सकता है (Ie2446, b/171872064, b/168285687)

यह सुविधा किन डिवाइसों के साथ काम करती है

  • androidx.paging:paging-compose:1.0.0-alpha09, सिर्फ़ कंपोज़ वर्शन 1.0.0-beta07 और इसके बाद के वर्शन के साथ काम करता है.

वर्शन 1.0.0-alpha08

24 फ़रवरी, 2021

androidx.paging:paging-compose:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये कमियां हैं.

Compose 1.0.0-beta01 के साथ इंटिग्रेट करने के लिए अपडेट किया गया.

वर्शन 1.0.0-alpha07

10 फ़रवरी, 2021

androidx.paging:paging-compose:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये कमिट हैं.

Compose Alphabet12 के साथ इंटिग्रेट करने के लिए अपडेट किया गया.

वर्शन 1.0.0-alpha06

28 जनवरी, 2021

androidx.paging:paging-compose:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

Compose 1.0.0-alpha11 के हिसाब से अपडेट किया गया.

वर्शन 1.0.0-alpha05

13 जनवरी, 2021

androidx.paging:paging-compose:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये कमियां हैं.

Compose 1.0.0-alpha10 के हिसाब से अपडेट किया गया.

वर्शन 1.0.0-alpha04

16 दिसंबर, 2020

androidx.paging:paging-compose:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • सुविधा की प्रॉपर्टी अपडेट की गई, CombinedLoadStates.refresh, CombinedLoadStates.prepend, सिर्फ़ Loading से NotLoading में ट्रांज़िशन के लिए, CombinedLoadStates.append मीडिएटर और सोर्स लोड की स्थितियों के बाद, NotLoading होने के बाद ही यह पक्का किया जा सकेगा कि रिमोट अपडेट लागू कर दिया गया है. (I65619)

वर्शन 1.0.0-alpha03

2 दिसंबर, 2020

androidx.paging:paging-compose:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये कमियां हैं.

  • Compose 1.0.0-alpha08 से मिलान करने के लिए अपडेट किया गया.

वर्शन 1.0.0-alpha02

11 नवंबर, 2020

androidx.paging:paging-compose:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • .peek(), .snapshot(), .retry(), और .refresh() तरीकों को इसमें जोड़ा गया वे LazyPagingItem जिनमें यह सुविधा उपलब्ध है AsyncPagingDataDiffer / PagingDataAdapter (Iddfe8, b/172041660)

वर्शन 1.0.0-alpha01

28 अक्टूबर, 2020

androidx.paging:paging-compose:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये कमिट शामिल हैं.

नई सुविधाएं

paging-compose आर्टफ़ैक्ट, पेजिंग लाइब्रेरी और Jetpack Compose को इंटिग्रेट करता है. इस्तेमाल का एक आसान उदाहरण:

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

वर्शन 3.0.1

वर्शन 3.0.1

21 जुलाई, 2021

androidx.paging:paging-*:3.0.1 रिलीज़ हो गया है. वर्शन 3.0.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • LivePagedList या RxPagedList के बनाए गए शुरुआती मान से PagedList.dataSource को ऐक्सेस करने पर, अब legalStateअपवाद (I96707) गलत तरीके से नहीं भेजा जाएगा

वर्शन 3.0.0

वर्शन 3.0.0

5 मई, 2021

androidx.paging:paging-*:3.0.0 रिलीज़ हो गया है. वर्शन 3.0.0 में ये कमियां शामिल हैं.

3.0.0 की मुख्य सुविधाएं

पेजिंग 2.x.x के ज़्यादातर मौजूदा एपीआई की जगह, नए पेजिंग 3 एपीआई का इस्तेमाल हो रहा है. अब ये सुधार किए जा सकते हैं:

  • Kotlin कोरूटीन और फ़्लो के लिए फ़र्स्ट-क्लास सपोर्ट
  • सदस्यता रद्द करने से जुड़ी सहायता
  • बिल्ट-इन लोड स्थिति और गड़बड़ी के सिग्नल
  • फिर से कोशिश करने और रीफ़्रेश करने की सुविधा
  • DataSource की तीनों सब-क्लास को एक यूनिफ़ाइड PagingSource क्लास में जोड़ दिया गया है
  • सेपरेटर जोड़ने के लिए, पहले से मौजूद पेज के ट्रांसफ़ॉर्मेशन ऐक्शन को पसंद के मुताबिक बनाना
  • स्टेटस के हिसाब से हेडर और फ़ुटर लोड हो रहे हैं

वर्शन 3.0.0-rc01

21 अप्रैल, 2021

androidx.paging:paging-*:3.0.0-rc01 रिलीज़ हो गया है. वर्शन 3.0.0-rc01 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • पेजिंग से जुड़ी समस्या ठीक की गई है, जिसकी वजह से कभी-कभी पेज पर काम न करने की वजह से अलग RecyclerView के लिए इवेंट का इस्तेमाल करना, जिससे कुछ लिसनर ट्रिगर हो सकते हैं समय से पहले. (Ic507f, b/182510751)

वर्शन 3.0.0-beta03

24 मार्च, 2021

androidx.paging:paging-*:3.0.0-beta03 रिलीज़ हो गया है. वर्शन 3.0.0-beta03 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • हमने प्लेसहोल्डर को हैंडल करने के तरीके में बदलाव किया है. RecyclerView में अनचाहे जंप को रोकने के लिए, पेज को फिर से लोड किया गया. यहां जाएं: ज़्यादा जानकारी के लिए, NullPaddedDiffing.md. (If1490, b/170027529, b/177338149)
  • .build() को कॉल करने पर, कई PagedList बिल्डर (पुराने कंपैटबिलिटी पाथ) मुख्य थ्रेड पर DataSource.Factory.create() को गलत तरीके से सिंक नहीं करते. (b/182798948)

वर्शन 3.0.0-beta02

10 मार्च, 2021

androidx.paging:paging-*:3.0.0-beta02 रिलीज़ हो गया है. वर्शन 3.0.0-beta02 में ये कमिट हैं.

एपीआई में किए गए बदलाव

  • Rx3 एक्सटेंशन अब सही तरीके से लागू होते हैं @ExperimentalCoroutinesApi के लिए ऑप्ट-इन करने की ज़रूरी शर्त. पहले वे @get तरीके पर मार्क किया गया है, जिसे Kotlin कंपाइलर ने अनदेखा कर दिया है ईमेल पाने वाला: https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)

गड़बड़ियां ठीक की गईं

  • एक्सपेरिमेंटल एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें (I6aa29, b/174531520)
  • उस गड़बड़ी को ठीक कर दिया गया है जिसकी वजह से PagingState, हमेशा null हो जाती थी, जब रिमोट रीफ़्रेश को कॉल किया जाता है.
  • गड़बड़ी को ठीक किया गया है, जिससे PagingSource से खाली पेज नहीं लौटाए जा सकतेprefetchDistance

वर्शन 3.0.0-beta01

10 फ़रवरी, 2021

androidx.paging:paging-*:3.0.0-beta01 रिलीज़ हो गया है. वर्शन 3.0.0-beta01 में ये कमिट हैं.

एपीआई में किए गए बदलाव

  • Rx2 और Rx3 रैपर अब इसकी प्रयोग वाली व्याख्या दिखाते हैं निर्भर करता है. अगर आप paging-rxjava2 में Rx कॉम्पैट रैपर का इस्तेमाल कर रहे हैं या paging-rxjava3, तो अब आपको इसके साथ उपयोगों को एनोटेट करना होगा @OptIn(ExperimentalCoroutinesApi::class) (Ib1f9d)

गड़बड़ियां ठीक की गईं

  • काम करने के पाथ से v2 DataSource API का इस्तेमाल करते समय, कभी-कभी IndexOutOfBoundsException: Inconsistency detected को ठीक कर दिया जाता है
  • साथ काम करने वाले पाथ के ज़रिए इस्तेमाल किए जाने पर, DataSource को शुरू करने के दौरान isInvalid कॉल अब मुख्य थ्रेड के बजाय, BringDispatcher पर सही तरीके से लॉन्च होता है. इससे, रूम के PagingSource को लागू करने के दौरान, मुख्य थ्रेड पर Db के ऐक्सेस की वजह से IllegalStateException की गड़बड़ी ठीक हो जाती है.

वर्शन 3.0.0-alpha13

27 जनवरी, 2021

androidx.paging:paging-*:3.0.0-alpha13 रिलीज़ हो गया है. वर्शन 3.0.0-alpha13 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • अब PagingSource.getRefreshKey को लागू करना ज़रूरी नहीं है. यह अब एक ऐब्स्ट्रैक्ट फ़ंक्शन है, लेकिन डिफ़ॉल्ट रूप से लागू नहीं होता. माइग्रेट करने वाले उपयोगकर्ता, डिफ़ॉल्ट सेटिंग को फिर से चालू कर सकते हैं लागू करता है, जो सिर्फ़ null दिखाता है, लेकिन getRefreshKey() के आधार पर एक कुंजी वापस लौटाने की पेज पर स्क्रोल करने की मौजूदा जगह, जिसकी वजह से पेजिंग को लोड होने की प्रक्रिया जारी रखने में मदद मिलती है को PagingState.anchorPosition के ज़रिए व्यूपोर्ट के चारों ओर फ़ोकस करें, अगर किया जा सकता है. (I4339a)
  • InvalidatingPagingSourceFactory अब फ़ाइनल क्लास है (Ia3b0a)
  • टर्मिनल सेपरेटर (हेडर / फ़ुटर) के कॉन्फ़िगरेशन की अनुमति दें एक और वैकल्पिक SeparatorType पैरामीटर के साथ व्यवहार. दोनों ये विकल्प मौजूद हैं:
    • FULLY_COMPLETE - मौजूदा व्यवहार; पेजिंगसोर्स और दोनों के लिए इंतज़ार करें टर्मिनल जोड़ने से पहले, endOfPaginationReached को मार्क करने के लिए RemoteMediator सेपरेटर. अगर RemoteMediator का इस्तेमाल नहीं किया गया हो, तो रिमोट loadState होगा अनदेखा किया गया. यह मुख्य तौर पर तब काम आता है, जब आपको सिर्फ़ सेक्शन दिखाना हो सेक्शन के पूरी तरह लोड होने पर सेपरेटर. इसमें, यहां से फ़ेच भी किया जा सकता है रिमोट सोर्स, जैसे कि नेटवर्क.
    • SOURCE_COMPLETE - सिर्फ़ PagingSource के मार्क होने तक इंतज़ार करें EndOfPagnationReached भले ही RemoteMediator का इस्तेमाल किया गया हो. इससे आपको हेडर और फ़ुटर को लोड होता है. इस वजह से, उपयोगकर्ताओं को टर्मिनल देखने के लिए स्क्रोल नहीं करना पड़ता सेपरेटर. (Ibe993, b/174700218)

गड़बड़ियां ठीक की गईं

  • अनियमित मेमोरी लीक को ठीक किया गया है, जो तब होता है जब PagingSource यह पेज फ़ेचर से लोड होना शुरू होने से पहले अमान्य हो जाता है. (I9606b, b/174625633)

वर्शन 3.0.0-alpha12

13 जनवरी, 2021

androidx.paging:paging-*:3.0.0-alpha12 रिलीज़ हो गया है. वर्शन 3.0.0-alpha12 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • अमान्य PageSource जिसने अब एक ऐब्सट्रैक्ट क्लास नहीं है क्योंकि इसमें कभी कोई अमूर्त तरीक़ा नहीं था. (I4a8c4)
  • .cachedIn() का ओवरलोड जोड़ा गया जो ViewModel स्वीकार करता है की जगह इस्तेमाल की जा सकती है. (I97d81, b/175332619)
  • Java कॉलर को इसमें PagingData ट्रांसफ़ॉर्म ऐक्शन का इस्तेमाल करने की अनुमति दें एक एसिंक्रोनस तरीके से, एक एक्ज़ीक्यूटिव को ट्रांसफ़ॉर्म ऑपरेटर में स्वीकार करके आर्ग्युमेंट. सभी -सिंक ट्रांसफ़ॉर्म ऑपरेटर में -सिंक सफ़िक्स होता है अभी हटा दिया गया है. Kotlin Coroutine उपयोगकर्ताओं को एक्सटेंशन फ़ंक्शन को कॉल करना, जो इसके बजाय निलंबन स्वीकार करता है. PagingData ट्रांसफ़ॉर्मेशन ऑपरेटर को एक्सटेंशन पर ले जाया गया की मदद से GA4 प्रॉपर्टी बनाई जा सकती है. Java उपयोगकर्ताओं को यह करना होगा उन्हें स्टैटिक हेल्पर के ज़रिए कॉल करें, जैसे कि PagingDataTransforms.map(pagingData, transform) अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Kotlin उपयोगकर्ताओं के लिए, सिंटैक्स एक जैसा होता है, लेकिन आपको फ़ंक्शन का इस्तेमाल करना होगा. (If6885, b/172895919)

गड़बड़ियां ठीक की गईं

  • गड़बड़ी को ठीक किया गया है. अगर पेज नंबर पहले ही खत्म हो चुका होता, तो adapter.refresh() के दौरान RemoteMediator.load() को कॉल नहीं किया जाता.

वर्शन 3.0.0-alpha11

16 दिसंबर, 2020

androidx.paging:paging-*:3.0.0-alpha11 रिलीज़ हो गया है. वर्शन 3.0.0-alpha11 में ये कमियां हैं.

नई सुविधाएं

  • नीचे दिए गए बुनियादी इस्तेमाल के उदाहरणों के लिए, सेव की गई स्थिति की सहायता जोड़ी गई है (खास तौर पर लेयर वाले सोर्स मामले में पूरी सहायता पर अब भी काम चल रहा है):
    • फ़्लो को कैश मेमोरी में सेव किया जाता है और ऐप्लिकेशन पर कोई असर नहीं पड़ता. उदाहरण के लिए, फ़्लो को किसी व्यू मॉडल में कैश मेमोरी में सेव किया जाता है और गतिविधि को प्रोसेस के दौरान फिर से बनाया जाता है
    • पेजिंग स्रोत की गिनती की जाती है, प्लेसहोल्डर चालू हैं, और लेआउट स्टेज नहीं किया जा सकता.

एपीआई में किए गए बदलाव

  • PagingSource.getRefreshKey() अब स्थिर एपीआई (I22f6f, b/173530980) है
  • PagingSource.invalidate अब खुला हुआ फ़ंक्शन नहीं है. अगर आपको अमान्य होने पर सूचना देना चाहते हैं, तो रजिस्टर करने की अमान्य वजह से अमान्य कॉल करने का विकल्प दें. (I628d9, b/173029013, b/137971356)
  • पेजर में अब अपने का इस्तेमाल करने के बजाय, ऑप्ट-इन व्याख्या के ज़रिए गैर-प्रयोग वाला सार्वजनिक एपीआई. (I9dc61, b/174531520)
  • सुविधा की प्रॉपर्टी अपडेट की गई, CombinedLoadStates.refresh, CombinedLoadStates.prepend, सिर्फ़ Loading से NotLoading में ट्रांज़िशन के लिए, CombinedLoadStates.append मीडिएटर और सोर्स लोड की स्थितियों के बाद, NotLoading होने के बाद ही यह पक्का किया जा सकेगा कि रिमोट अपडेट लागू कर दिया गया है. (I65619)
  • LoadParams.pageSize को हटा दिया गया है (इसे पहले ही बंद कर दिया गया है). आपको PagingSource में LoadParams.loadSize का इस्तेमाल करने का सुझाव दिया जाता है.

    LoadParams.loadSize हमेशा PagingConfig.pageSize के बराबर होता है लेकिन शुरुआती लोड कॉल को छोड़कर, जब यह PagingConfig.initialLoadSize.

    अगर आपको किसी पेजर या पेजर का इस्तेमाल किए बिना, ऐसा हो सकता है कि PagedList, pageSize और PagingConfig.pageSize से मेल न खाए, initialLoadSize भी सेट किया जा रहा है. अगर यह आपके लिए ज़रूरी है के बजाय, Pager/PagedList का इस्तेमाल करें. डेटा सोर्स लोड करने के तरीकों के लिए, सही PageSize का इस्तेमाल करें. (I98ac7, b/149157296)

गड़बड़ियां ठीक की गईं

  • गैर-कानूनी होने की वजह से होने वाले क्रैश को ठीक किया गया: PagingConfig.maxSize सेट के साथ सेपरेटर का इस्तेमाल करना. (I0ed33, b/174787528)
  • गड़बड़ी को ठीक किया गया, जहां PREPEND / APPEND की लोड स्थिति नहीं दिखेगी NotLoading(endOfPaginationReached = true) में तुरंत अपडेट करें शुरुआती लोड के बाद, अगर RemoteMediator सेट किया गया था (I8cf5a)
  • गड़बड़ी को ठीक किया गया है, जहां प्रज़ेंटर-साइड एपीआई, जैसे कि .sSnapshot(), .peek() वगैरह, ListUpdateCallback अपडेट में पिछली (पुराने) सूची दिखाते थे.
  • गड़बड़ी को ठीक किया गया है, जहां RemoteMediator के साथ इस्तेमाल किए जाने पर सेपरेटर ऑपरेटर, हेडर या फ़ुटर नहीं जोड़ते हैं
  • गड़बड़ी को ठीक किया गया है, जहां RemoteMediator के लिए NotLoading के लिए अपडेट किया गया LoadState अपडेट, लोड होने की स्थिति के दौरान रुक जाएगा
  • उस गड़बड़ी को ठीक कर दिया गया है जिसकी वजह से Paging2.0 के साथ काम करने वाला एपीआई, .asPagingSourceFactory(), गलत CoroutineDispatcher पर बैकिंग DataSource शुरू कर सकता है. यह क्रैश और ANR वाली संभावित गड़बड़ियों को ठीक करता है. खास तौर पर, ऐसा तब होता है, जब रूम के PagingSource को लागू करने का तरीका इस्तेमाल किया जा रहा हो, जो इस कंपैटबिलिटी पाथ का इस्तेमाल करता है.

वर्शन 3.0.0-alpha10

2 दिसंबर, 2020

androidx.paging:paging-*:3.0.0-alpha10 रिलीज़ हो गया है. वर्शन 3.0.0-alpha10 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • इस्तेमाल नहीं किए गए dataRefreshFlow और dataRefreshListener एपीआई हटा दिए गए हैं ऐसा इसलिए, क्योंकि ये loadStateFlow / Listener के अपडेट में काम के नहीं हैं. इसके लिए जो माइग्रेट हो रहे हैं, वह loadStateFlow के बराबर है:

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

    (Ib5570, b/173530908)

गड़बड़ियां ठीक की गईं

  • अब RemoteMediator REFRESH के लिए endOfPaginationReached सही तरीके से LoadState अपडेट में लागू करें और रिमोट APPEND को रोकता है और PREPEND को ट्रिगर होने से रोका गया. (I94a3f, b/155290248)
  • शुरुआती पेज खाली होने की वजह से खाली सूची दिखाना या ज़्यादा फ़िल्टर करने वाली सुविधा, अब पेजिंग को PREPEND की शुरुआत से नहीं रोकती है या APPEND लोड होने चाहिए. (I3e702, b/168169730)
  • getRefreshKey के कॉल नहीं होने की समस्या ठीक कर दी गई है तेज़ी से अमान्य होने पर, PagingSource की पीढ़ियां जनरेट की जाती हैं. (I45460, b/170027530)

बाहरी योगदान

  • एक नई ऐब्स्ट्रैक्ट क्लास अमान्यटिंग पेजिंगसोर्स फै़क्ट्री जोड़ी गई है ऐसा .invalidate() API के साथ किया गया है जो सभी PagingSources में अमान्य को फ़ॉरवर्ड कर देता है यह उत्सर्जन करता है. @CLAraf3 को धन्यवाद! (Ie71fc, b/160716447)

आम समस्याएं

  • ऐसा हो सकता है कि RemoteMediator b/172254056 का इस्तेमाल करते समय .insertSeparators() बदलाव के हेडर और फ़ुटर तुरंत न दिखें
  • RemoteMediator का इस्तेमाल करने पर, रिमोट LoadState अटक सकता है. ऐसा तब होता है, जब RemoteMediator.load() से पहले अमान्य वैल्यू और PagingSource.load(LoadParams.Refresh(...)) पूरा हो जाता है. इस वजह से, b/173717820 वापस आ जाता है

वर्शन 3.0.0-alpha09

11 नवंबर, 2020

androidx.paging:paging-*:3.0.0-alpha09 रिलीज़ हो गया है. वर्शन 3.0.0-alpha09 में ये कमिट हैं.

एपीआई में किए गए बदलाव

  • dataरीफ़्रेशFlow / लिसनर मेथड को पूरी तरह से बंद करने के लिए, InsertWith क्लॉज़ का इस्तेमाल करें. (I6e2dd)

गड़बड़ियां ठीक की गईं

  • RemoteMediator के साथ सेपरेटर का इस्तेमाल करने पर, IllegalArgumentException में होने वाली गड़बड़ी को ठीक किया जा सकता है. साथ ही, इससे अमान्य वैल्यू ट्रिगर हो जाती है. ऐसा तब होता है, जब EndOfPagenation रिटर्न करने वाला रिमोट लोड अब भी चल रहा हो (I3a260)

वर्शन 3.0.0-alpha08

28 अक्टूबर, 2020

androidx.paging:paging-*:3.0.0-alpha08 रिलीज़ हो गया है. वर्शन 3.0.0-alpha08 में ये कमिट हैं.

एपीआई में किए गए बदलाव

  • DataSource.InvalidatedCallback के Kotlin / Java के वैरिएंट एक फ़ंक्शन के ज़रिए Kotlin में एसएएम-कन्वर्ज़न को चालू करके जोड़ा गया है इंटरफ़ेस (Kotlin 1.4 में उपलब्ध है). इससे वह बग भी ठीक हो जाता है जहां अमान्य कॉलबैक का kotlin वैरिएंट, बदलाव के बाद कॉल नहीं किया गया .map या .mapByPage से. (I1f244, b/165313046)

गड़बड़ियां ठीक की गईं

  • ViewPager के साथ पेजिंग के इंटरैक्शन में काफ़ी सुधार हुआ है. खास तौर पर, पेज के अमान्य होने की वजह से, पेजिंग से अब RemoteMediator#load कॉल रद्द नहीं होगा. अगर REFRESH की ज़रूरत हो, तो यह एपेंड/प्रीपेंड लोड करने का अनुरोध भी नहीं करेगा, जब तक कि रीफ़्रेश करने का अनुरोध पूरा नहीं हो जाता. (I6390b, b/162252536)
  • androidx (I4bbea, b/138602561) के लिए RememberGetterMatchingBuilder के लिए एपीआई लिंट जांच चालू है
  • गड़बड़ी को ठीक किया गया, जहां .withLoadState* ConcatAdapter हेल्पर बैकग्राउंड थ्रेड (I18bb5, b/170988309) से RecyclerView को सूचना देने की वजह से क्रैश हो गया
  • उस गड़बड़ी को ठीक किया गया है जहां बहुत छोटे पेज को लोड करने से प्रीफ़ेच, सही तरीके से लोड नहीं हो पाता.Iffda3 b/169259468

वर्शन 3.0.0-alpha07

1 अक्टूबर, 2020

androidx.paging:paging-*:3.0.0-alpha07 रिलीज़ हो गया है. वर्शन 3.0.0-alpha07 में ये कमिट हैं.

एपीआई में किए गए बदलाव

  • एसिंक्रोनस PagingData गुआवा-आधारित ऑपरेटर अब एक एक्ज़ीक्यूटिव को स्वीकार करते हैं पैरामीटर के तौर पर इस्तेमाल किया जा सकता है. (आईडी4372)

गड़बड़ियां ठीक की गईं

  • RemoteMediator में दिए गए IndexOutOfBounds अपवाद को ठीक कर दिया गया है रेस कंडिशन में हो जाते हैं. (I00b7f, b/165821814)
  • DataSource में रेस कंडिशन को ठीक किया गया -> PagingSource कन्वर्ज़न की वजह से होने वाला PagingSource, DataSource से अमान्य होने पर मिलने वाले सिग्नल को अनदेखा कर सकता है.
  • पेज फ़ेचइन लॉजिक में आई समस्या को ठीक किया गया है. इसकी वजह से कभी-कभी यह PagingDataAdapter.refresh() को शुरू करने तक PagingSource की नई जनरेशन को नहीं चुन पाती
  • उस समस्या को ठीक किया गया है, जो RemoteMediator के साथ काम करने वाले किसी DataSource को पेजिंगसोर्स (जैसे कि रूम से बनाया गया) का इस्तेमाल करते समय, कभी-कभी स्क्रोल-पोज़ीशन खो सकती थी

बाहरी योगदान

  • PagingData के लिए, RxJava2, RxJava3, और Guava-आधारित एसिंक्रोनस ट्रांसफ़ॉर्मेशन ऑपरेटर को जोड़ने के लिए @simonschiller को धन्यवाद!

वर्शन 3.0.0-alpha06

2 सितंबर, 2020

androidx.paging:paging-*:3.0.0-alpha06 रिलीज़ हो गया है. वर्शन 3.0.0-alpha06 में ये कमिट हैं.

एपीआई में किए गए बदलाव

  • UnsupportedOperationException के साथ साफ़ तौर पर मैसेज किया जा सकता है स्टेबल आईडी के लिए सहायता की कमी की समस्या अब तब होती है, जब PagingDataAdapter.setHasStableIds को कॉल किया गया है. (Ib3890, b/158801427)

गड़बड़ियां ठीक की गईं

  • Insertसैटर अब खाली पेजों को फ़िल्टर नहीं करते, जिससे प्रज़ेंटर को दी जाने वाली दूरी को प्रीफ़ेच करें. ऐसा तब भी होगा, जब बात ऐसे मामलों में हो जहां कई खाली पेज डाले गए. (I9cff6, b/162538908)

वर्शन 3.0.0-alpha05

19 अगस्त, 2020

androidx.paging:paging-*:3.0.0-alpha05 रिलीज़ हो गया है. वर्शन 3.0.0-alpha05 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • पेजिंग अब सही तरीके से पेजों को प्रीफ़ेच करता है, भले ही दिखाया गया डेटा बहुत ज़्यादा फ़िल्टर किया गया हो
  • LoadResult.Error को फिर से कोशिश किए जाने पर लोड होने पर, आइटम के ऐक्सेस को गलत तरीके से दोबारा ट्रिगर करने की सुविधा नहीं मिलती.

बाहरी योगदान

  • कुछ टेस्ट में सुधार करने में मदद करने के लिए, क्लारा एफ़ को धन्यवाद! (549612)

वर्शन 3.0.0-alpha04

5 अगस्त, 2020

androidx.paging:paging-*:3.0.0-alpha04 रिलीज़ हो गया है. वर्शन 3.0.0-alpha04 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • peek() एपीआई को AsyncPagingDataDiffer में जोड़ा और ट्रिगर पेज के बिना, प्रज़ेंट किए गए डेटा का ऐक्सेस देने के लिए PagingDataAdapter लोड करता है. (I38898, b/159104197)
  • PagingDataAdapter में snapshot() एपीआई जोड़ा गया और दिखाए गए आइटम को इसके बिना वापस पाने की अनुमति देने के लिए AsyncPagingDataDiffer ट्रिगर करने वाला पेज फ़ेच करना. (I566b6, b/159104197)
  • अनुमति देने के लिए PagingData.from(List<T>) कंस्ट्रक्टर जोड़ा गया स्थिर सूचियां प्रस्तुत की जाती हैं, जिन्हें पूरी जानकारी के साथ जोड़ा जा सकता है कुछ राज्यों में स्टैटिक सूचियां दिखाने के लिए पेजिंग डेटा फ़्लो, जैसे कि शुरुआती रीफ़्रेश खत्म होता है या सिर्फ़ ट्रांसफ़ॉर्मेशन की जांच करने के लिए किया जाता है. (आईडी134d)
  • dataरीफ़्रेश फ़्लो / लिसनर एपीआई को इस तरह से बंद करें जैसे वे थे इसका मकसद मौजूदा आइटम की स्थिति को REFRESH पर दिखाना है, लेकिन लोडस्टेट फ़्लो / लिसनर कॉलबैक टाइमिंग और itemCount प्रॉपर्टी में सुधार के साथ, यह गै़र-ज़रूरी है (Ia19f3)
  • PagingSource और RemoteMediator (I49ef3, b/161480176) के लिए, RxJava3 के साथ काम करने वाले रैपर जोड़े गए

गड़बड़ियां ठीक की गईं

  • PositionalDataSource को इसके माध्यम से PagingSource में बदला गया toPagingSourceFactory हेल्पर, जिसमें रूम से जनरेट किया गया PagingSource भी शामिल है अब खुद को सही तरीके से सहायता देने के लिए मार्क कर रहे हैं. (I3e84c, b/162161201)
  • सबमिट डेटा के सिंक्रोनस वैरिएंट का इस्तेमाल करते समय होने वाली गड़बड़ी को ठीक किया गया कभी-कभी ClosedSendChannelException (I4d702, b/160192222) की वजह से रेस हो सकती है

बाहरी योगदान

  • Slack की ओर से, RxJava3 के साथ काम करने वाले रैपर जोड़ने के लिए ज़ैक स्वियर्स का धन्यवाद! (I49ef3, b/161480176)

वर्शन 3.0.0-alpha03

22 जुलाई, 2020

androidx.paging:paging-*:3.0.0-alpha03 रिलीज़ हो गया है. वर्शन 3.0.0-alpha03 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • PagingState का कंस्ट्रक्टर, अब सार्वजनिक हो गया है. इसलिए, get RefreshKey() की जांच को आसान बनाना चाहिए (I8bf15)
  • Java से लेकर, DataSource kotlin मैप फ़ंक्शन के वैरिएंट छिपाए गए मूल और kotlin के प्रकारों के बीच अस्पष्टता को हल करें. (If7b23, b/161150011)
  • Kotlin के उपयोगकर्ताओं के लिए उपलब्ध सुविधाओं के मकसद से बनाए गए ग़ैर-ज़रूरी एपीआई @JvmSynthetic (I56ae5) के तौर पर मार्क किया गया है
  • Loadresults.Page के कंस्ट्रक्टर के लिए ओवरलोड जोड़े गए इसमें से किस आइटम को डिफ़ॉल्ट तौर पर COUNT_UNDEFINED (I47849) के लिए डिफ़ॉल्ट रूप से सेट किया जाता है
  • बनाए गए मौजूदा PagingData ऑपरेटर, निलंबित करने के तरीकों को स्वीकार करते हैं और पेश किया गया नया MapSync, फ़्लैटMapSync, और फ़िल्टर सिंक, जो बिना किसी सस्पेंडिंग के है ऑपरेटर का इस्तेमाल किया जा सकता है. कन्वर्ज़न के मौजूदा तरीके एक्सटेंशन फ़ंक्शन में ले जाए गए हैं, ताकि Kotlin उपयोगकर्ताओं को अब उन्हें इंपोर्ट करना पड़े. (I34239, b/159983232)

गड़बड़ियां ठीक की गईं

  • रूम (औरPositionalDataSource) पेजिंगसोर्स अब पहले पेज के हिस्से के तौर पर लीडिंग सेपरेटर दिखाएं, ताकि उपयोगकर्ता को देखने के लिए स्क्रोल करने की ज़रूरत नहीं है. (I6f747, b/160257628)
  • प्लेसहोल्डर पर आइटम ऐक्सेस करने की सुविधा पेज दिखाया जाता है, जो अनुरोध किए गए इंडेक्स को पूरा करता है PagingData.filter() (I95625, b/158763195) की मदद से बदलने के बाद
  • उस गड़बड़ी को ठीक करना जहां कभी-कभी स्क्रोल करने के बाद PagingSource से जुड़ी गड़बड़ी मिलने पर, PagingDataAdapter.retry() को रोका जा सकता है फिर से प्रयास करने से रोकने के लिए. (I1084f, b/160194384)
  • उस समस्या को ठीक करता है जहां पेज छोड़ने के बाद आइटम ऐक्सेस किया जा सकता है पेज लोड नहीं करते, भले ही आइटम का ऐक्सेस प्री-फ़ैट डिस्टेंस (Ie95ae, b/160038730) के अंदर था
  • PagingConfig.maxSize को सेट करने पर, अब प्लेसहोल्डर चालू नहीं होंगे गिरावट इवेंट के बाद (I2be29, b/159667766)

वर्शन 3.0.0-alpha02

24 जून, 2020

androidx.paging:paging-*:3.0.0-alpha02 रिलीज़ हो गया है. वर्शन 3.0.0-alpha02 में ये कमियां हैं.

एपीआई में किए गए बदलाव

  • सामान्य डिफ़ॉल्ट वैल्यू वाले PagingConfig के कंस्ट्रक्टर के लिए ओवरलोड जोड़े गए (I39c50, b/158576040)
  • PagingDataAdapter और के कंस्ट्रक्टर के लिए ओवरलोड जोड़े गए सामान्य डिफ़ॉल्ट वैल्यू वाले AsyncPagingDataDiffer (Ie91f5)
  • अडैप्टर API, dataRefreshFlow और dataRefreshListener अब बूलियन को पास करें, ताकि यह पता चल सके कि PagingData खाली है या नहीं (I6e37e, b/159054196)
  • RemoteMediator के लिए RxJava और Guava एपीआई जोड़े गए - RxremoteMediator और ListenableFutureRemoteMediator
  • isEmpty() और firstItemOrNull() (I3b5b6, b/158892717) जैसे सामान्य आइटम के ऐक्सेस के लिए, PagingState में हेल्पर जोड़े गए

गड़बड़ियां ठीक की गईं

  • पेजर, अब PagingSource से फ़ैक्ट्री में पेजिंग सोर्स का दोबारा इस्तेमाल किए जाने की जांच करता है. ऐसा अमान्य PagingSources के दोबारा इस्तेमाल को रोकने के लिए किया जाता है, जिससे साफ़ तौर पर गड़बड़ी दिखती है (I99809, b/158486430)
  • RemoteMediator REFRESH से जुड़ी गड़बड़ियां अब पेजिंगसोर्स को लोड होने से नहीं रोकतीं (I38b1b, b/158892717)
  • एक साथ कई PagingData पर एक साथ डेटा इकट्ठा करने की वजह से, submitData का निलंबित वर्शन अब क्रैश नहीं होता submitData के निलंबित वर्शन के बाद कॉल किया गया. (I26358, b/158048877)
  • "पेजर से दो बार इकट्ठा नहीं किया जा सकता" समस्या को ठीक किया गया ऐसा अपवाद जो कॉन्फ़िगरेशन में बदलाव के बाद हो सकता है (I58bcc, b/158784811)

वर्शन 3.0.0-alpha01

10 जून, 2020

androidx.paging:paging-*:3.0.0-alpha01 रिलीज़ हो गया है. वर्शन 3.0.0-alpha01 में ये कमियां हैं.

पेजिंग लाइब्रेरी को 3.0 में अपडेट किया गया है, ताकि इसमें कई नई और खास सुविधाएं जोड़ी जा सकें.

3.0 की नई सुविधाएं

आम समस्याएं

  • पेजिंग 3 javadocs अभी तक उपलब्ध नहीं हैं. इस बीच, कृपया ऊपर लिंक की गई गाइड या Kotlin दस्तावेज़ों का इस्तेमाल करें. (b/158614050)

वर्शन 2.1.2

वर्शन 2.1.2

18 मार्च, 2020

androidx.paging:paging:2.1.2 रिलीज़ हो गया है. वर्शन 2.1.2 में ये चीज़ें 2.1.0 के मुकाबले शामिल होती हैं.

गड़बड़ियां ठीक की गईं

  • अमान्य होने के दौरान, पोज़िशन बदलते समय, बहुत कम मामलों में IndexOutOfBoundsException के लिए सुधार किया गया है.

रिलीज़ से जुड़ी समस्या

  • पेजिंग वर्शन 2.1.1 को गलत तरीके से कॉन्फ़िगर की गई शाखा से गलत तरीके से रिलीज़ किया गया था. इससे कुछ हद तक लागू किए गए एपीआई और फ़ंक्शन के बारे में, आने वाले समय में रिलीज़ किया जा रहा है.

  • पेजिंग 2.1.2 में, लोड सेंटरिंग से जुड़ा समाधान शामिल है जिसे मूल रूप से 2.1.1 में रिलीज़ किया गया था, लेकिन इस बार 2.1.0 रिलीज़ के ऊपर सही तरीके से चुना गया. अगर आप वर्तमान में 2.1.1 पर हैं, तो इस रिलीज़ में अपग्रेड करने का सशक्त सुझाव दिया जाता है.

वर्शन 2.1.1

वर्शन 2.1.1

18 दिसंबर, 2019

androidx.paging:paging-*:2.1.1 रिलीज़ हो गया है. वर्शन 2.1.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • प्लेसहोल्डर के बंद होने पर, StatusalDataSources से लगातार आने वाले शुरुआती लोड, पिछली बार ऐक्सेस किए जाने के आस-पास फ़ोकस में होते हैं

वर्शन 2.1.0

वर्शन 2.1.0

25 जनवरी, 2019

पेजिंग 2.1.0 को 2.1.0-rc01 के किसी बदलाव के बिना रिलीज़ किया गया.

वर्शन 2.1.0-rc01

6 दिसंबर, 2018

पेजिंग 2.1.0-rc01 को 2.1.0-beta01 के किसी बदलाव के बिना रिलीज़ किया गया.

वर्शन 2.1.0-beta01

1 नवंबर 2018

पेजिंग 2.1.0-beta01 को 2.1.0-alpha01 के किसी बदलाव के बिना रिलीज़ किया गया.

वर्शन 2.1.0-alpha01

12 अक्टूबर, 2018

पेजिंग 2.1.0-alpha01 में दो प्रमुख सुविधाएं जोड़ी गई हैं - पेज ड्रॉप करना और हर आर्टफ़ैक्ट के लिए KTX एक्सटेंशन लाइब्रेरी - साथ ही कई अन्य API बदलाव और बग समाधान.

एपीआई में किए गए बदलाव

  • मेमोरी में लोड किए गए आइटम की संख्या को सीमित करने के लिए, PagedList.Config.Builder.setMaxSize() को जोड़ा गया.
  • androidx.paging.Config() को PagedList.Config.Builder के लिए Kotlin विकल्प के तौर पर जोड़ा गया
  • androidx.paging.PagedList() को PagedList.Builder के लिए Kotlin विकल्प के तौर पर जोड़ा गया
  • DataSourceFactory.toLiveData() को LivePagedListBuilder के लिए Kotlin विकल्प के तौर पर जोड़ा गया
  • RxPagedListBuilder के लिए, Kotlin के विकल्पों के तौर पर DataSourceFactory.toObservable() और toFlowable() को जोड़ा गया
  • PagedList को बदले जाने पर, उसे सुनने के लिए AsyncPagedListDiffer.addPagedListListener() को जोड़ा गया. b/111698609
  • जोड़ा गया PagedListAdapter.onCurrentListChanged() वैरिएंट, जो पुराने और नई सूची में पास हो गया है. हालांकि, पिछला वैरिएंट अब काम नहीं करता.
  • ऐसे PagedListAdapter/AsyncPagedListDiffer.submitList() वैरिएंट जोड़े गए जो अलग-अलग होने के बाद, अतिरिक्त कॉलबैक लेता है, जो पेज वाली सूची के दिखने पर/जब पेज पर जाता है, तो ट्रिगर होता है. यह आपको PagedList की अदला-बदली करने के तरीके को यूज़र इंटरफ़ेस (यूआई) के अन्य अपडेट के साथ सिंक करने की सुविधा देता है. b/73781068
  • आपको यह बताने के लिए PagedList.getLoadedCount() को जोड़ा गया है कि मेमोरी में कितने आइटम हैं. ध्यान दें कि प्लेसहोल्डर बंद होने पर, रिटर्न वैल्यू हमेशा .size() के बराबर होती है.

गड़बड़ियां ठीक की गईं

  • सूचियों का फिर से इस्तेमाल किए जाने पर फ़र्क़ दिखाते समय, रेस की कंडिशन ठीक की गई b/111591017
  • इंडेक्स के अमान्य होने पर, PagedList.loadAround() अब IndexOutOfBoundsException दिखाता है. पहले, यह किसी दूसरे अपवाद की वजह से क्रैश हो सकता था.
  • ऐसे मामले को ठीक किया गया है जिसमें बहुत ही छोटे शुरुआती लोड साइज़ के साथ-साथ, कोई बदलाव न किया गया डेटा लोड न होने की वजह से b/113122599 अब और लोड न हो

वर्शन 2.0.0

वर्शन 2.0.0

1 अक्टूबर, 2018

पेजिंग 2.0.0 को एक बग समाधान के साथ रिलीज़ किया गया है.

गड़बड़ियां ठीक की गईं

  • PositionalDataSource और प्लेसहोल्डर b/114635383 का इस्तेमाल करके बहुत तेज़ी से स्क्रोल करने पर होने वाले क्रैश को ठीक किया गया.

वर्शन 2.0.0-beta01

2 जुलाई, 2018

गड़बड़ियां ठीक की गईं

  • कुछ प्रीपेंड मामलों में गायब होने वाली ठीक की गई सामग्री (प्लेसहोल्डर बंद किया गया, पोज़िशनलडेटासोर्स) b/80149146
  • (पहले से 1.0.1 में रिलीज़ हो चुका है) क्रैश की ऐसी समस्याएं ठीक की गई हैं जिनमें PagedListAdapter और AsyncPagedListDiffer, ले जाने के इवेंट का सिग्नल नहीं दे पाएंगे. b/110711937

AndroidX से पहले की डिपेंडेंसी

पेजिंग के आने वाले AndroidX वर्शन से पहले के वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:

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"
}

वर्शन 1.0.1

वर्शन 1.0.1

26 जून, 2018

पेज 1.0.1 को runtime में एक गड़बड़ी ठीक करके रिलीज़ किया गया है. ऐप्लिकेशन को क्रैश या फ़्रीज़ होने से बचाने के लिए, हमारा सुझाव है कि 1.0.1 का इस्तेमाल करें. पेजिंग RxJava2 1.0.1 भी रिलीज़ किया गया है और यह 1.0.0-rc1 की तरह है.

गड़बड़ियां ठीक की गईं

  • उन क्रैश को ठीक किया गया है जहां PagedListAdapter और AsyncPagedListDiffer, ऐप्लिकेशन को दूसरी जगह ले जाने के इवेंट का सिग्नल नहीं दे पाते. b/110711937

RxJava2 वर्शन 1.0.0

RxJava2 वर्शन 1.0.0-rc1

16 मई, 2018

पेजिंग RxJava2 1.0.0-rc1 में अब उम्मीदवार की जानकारी हटाई जा रही है. इसमें पहले के मुकाबले कोई बदलाव नहीं हुआ है ऐल्फ़ा वर्शन

वर्शन 1.0.0

वर्शन 1.0.0-rc1

19 अप्रैल, 2018 पेजिंग रिलीज़ कैंडिडेट

हमारे पास कोई भी ज़्यादा ज्ञात समस्याएं या नई सुविधाएं नहीं हैं पेजिंग 1.0.0 रिलीज़. 1.0.0-rc1 का इस्तेमाल करने के लिए, कृपया अपने प्रोजेक्ट अपग्रेड करें और इसे टेस्ट करने में हमारी मदद करें, ताकि हम एक ठोस 1.0.0 शिप कर सकें.

इस रिलीज़ में कोई बदलाव नहीं किया गया है. यह 1.0.0-beta1 के जैसा है.

वर्शन 1.0.0-beta1

5 अप्रैल, 2018

रिलीज़ कैंडिडेट के लॉन्च से पहले कुछ समय के लिए पेजिंग बीटा वर्शन में होगी. हम Paging 1.0 के लिए, एपीआई में और बदलाव करने की योजना नहीं बना रहे हैं. साथ ही, एपीआई में कोई बदलाव करने का बार भी बहुत ज़्यादा है.

पेजिंग के लिए ऐल्फ़ा RxJava2 सपोर्ट को एक अलग वैकल्पिक मॉड्यूल के तौर पर रिलीज़ किया गया (android.arch.paging:rxjava2:1.0.0-alpha1) और कुछ समय के लिए इसका अलग वर्शन बनाया जाएगा, जब तक यह स्थिर नहीं हो जाता.

यह नई लाइब्रेरी, LivePagedListBuilder की जगह एक RxJava2 विकल्प उपलब्ध कराती है. इससे प्रॉपर्टी को बनाया जा सकता है Observable और Flowable, Executor के बजाय Scheduler सेकंड ले रहे हैं:

Kotlin

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

Java

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

नई सुविधाएं

  • RxPagedListBuilder को नए android.arch.paging:rxjava2 आर्टफ़ैक्ट के ज़रिए जोड़ा गया है.

एपीआई में किए गए बदलाव

  • बिल्डर में एक्ज़िक्यूटर की भूमिका को साफ़ तौर पर दिखाने के लिए, एपीआई में बदलाव:

    • setBackgroundThreadExecutor() का नाम बदलकर setFetchExecutor() किया गया (PagedList.Builder और LivePagedListBuilder में)

    • setMainThreadExecutor() का नाम बदलकर setNotifyExecutor() किया (PagedList.Builder में).

  • PagedList.mCallbacks सदस्य को निजी के तौर पर सेट किया गया.

गड़बड़ियां ठीक की गईं

  • LivePagedListBuilder तय किए गए एक्ज़िक्यूटर पर, शुरुआती PagedList लोड को ट्रिगर करता है, की जगह आर्क कॉम्पोनेंट IO थ्रेड पूल बना सकते हैं.

  • इंटरनल DataSource रैपर में अमान्य व्यवहार को ठीक कर दिया गया है (DataSource.map लागू करने के लिए इस्तेमाल किया गया था, साथ ही, प्लेसहोल्डर बंद है PositionalDataSource लोड हो रहा है) b/77237534

वर्शन 1.0.0-alpha7

21 मार्च, 2018

पेजिंग 1.0.0-alpha7 को लाइफ़साइकल 1.1.1 के साथ रिलीज़ किया गया. पेजिंग alpha7, ऊपर बताई गई Function क्लास के स्थानांतरण पर निर्भर करता है, इसलिए आपको अपनी lifecycle:runtime डिपेंडेंसी को android.arch.lifecycle:runtime:1.1.1 पर अपडेट करना होगा.

पेजिंग alpha7 को पेजिंग हिट बीटा से पहले अंतिम रिलीज़ होने की योजना है.

एपीआई में किए गए बदलाव

  • DataSource.LoadParams ऑब्जेक्ट में अब एक सार्वजनिक कंस्ट्रक्टर है और DataSource.LoadCallback ऑब्जेक्ट अब ऐब्स्ट्रैक्ट हैं. इससे, DataSource को रैप करने की सुविधा चालू हो जाती है या मॉक कॉलबैक की मदद से, DataSource को सीधे तौर पर टेस्ट किया जा सकता है. b/72600421
  • DataSource और DataSource.Function के लिए मैपर
    • map(Function<IN,OUT>) की मदद से, DataSource के लोड किए गए नतीजों को बदला जा सकता है, उन्हें रैप किया जा सकता है या उनमें सजावट की जा सकती है.
    • mapByPage(<List<IN>,List<OUT>>) बैच प्रोसेसिंग के लिए इसे चालू करता है (उदाहरण के लिए, अगर एसक्यूएल से लोड किए गए आइटम के लिए किसी अलग डेटाबेस की अतिरिक्त क्वेरी करने की ज़रूरत है, तो उसे बैच के तौर पर किया जा सकता है.)
  • PagedList#getDataSource() को सुविधा के तरीके के तौर पर जोड़ा गया है b/72611341
  • एपीआई से सभी ऐसी क्लास हटा दी गई हैं जो अब काम नहीं करतीं. इनमें recyclerview.extensions पैकेज और LivePagedListProvider के बचे हुए हिस्से भी शामिल हैं.
  • मैप की सुविधाओं को चालू करने के लिए, DataSource.Factory को इंटरफ़ेस से ऐब्स्ट्रैक्ट क्लास में बदला जाता है.

गड़बड़ियां ठीक की गईं

  • बदले गए बिल्डर को फ़ाइनल करना है. b/70848565
  • रूम DataSource को लागू करने की सुविधा को, अब मल्टी-टेबल क्वेरी को हैंडल करने के लिए ठीक कर दिया गया है - यह समस्या रूम 1.1.0-beta1 में मौजूद है, ऊपर दिया गया है.
  • उस गड़बड़ी को ठीक किया गया है जिसमें प्लेसहोल्डर के चालू होने पर, PositionalDataSource के लिए BoundaryCallback.onItemAtEndLoaded शुरू नहीं होगा और कुल साइज़, पेज साइज़ का सटीक गुणा होता है.

वर्शन 1.0.0-alpha5

22 जनवरी, 2018

गड़बड़ियां ठीक की गईं

  • प्लेसहोल्डर के बंद होने पर, पेज के लोड होने की समस्या ठीक करें b/70573345
  • legalArgument Settings गड़बड़ी को ट्रैक करने के लिए अतिरिक्त लॉगिंग b/70360195 (और अनुमान के हिसाब से रूम-साइड समाधान)
  • Javadoc के सैंपल कोड से जुड़ी समस्याएं ठीक करना b/70411933, b/71467637