पृष्ठांकन
इस टेबल में, androidx.paging
ग्रुप के सभी आर्टफ़ैक्ट शामिल हैं.
सह-प्रॉडक्ट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
पेजिंग-* | 3.3.2 | - | - | - |
पेजिंग-कंपोज़ | 3.3.2 | - | - | - |
डिपेंडेंसी तय करना
पेजिंग पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट. 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
से अपडेट कर दिया गया है, ताकि वह पेजिंग वाले अन्य सभी आर्टफ़ैक्ट के वर्शन से मेल खाए.
एपीआई में किए गए बदलाव
- पेजिंग कंपोज़ से, काम नहीं करने वाले
items(LazyPagingItems)
औरitemsIndexed(LazyPagingItems)
एपीआई को हटाया गया. एपीआई को बदलने के उदाहरण के लिए, पेज लिखने की सुविधा1.0.0-alpha20
के प्रॉडक्ट की जानकारी देखें. (I9626e)
वर्शन 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)
बाहरी योगदान
- Android/JVM के एट्रिब्यूट से पेजिंग हटाने में योगदान देने के लिए, वेंडन का धन्यवाद. (#525, #523, #520, #519, #507, #506, #505, #499, #497, #496, #493)
वर्शन 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
के लिए. पहले, यह सुविधा RemoteMediatorREFRESH
के लिए endOfPaginationReachtrue
तक पहुंचा, लेकिन नहीं पेजिंगसोर्स के लिए. इस व्यवहार को अब हमेशा के लिए वापस लौटाने के लिए एक साथ कर दिया गया है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)
. इसका मतलब है कि:- RemoteMediator का इस्तेमाल करने पर, मीडिएटर स्टेट की जानकारी हमेशा अपने-आप भर जाएगी.
- नया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 }
गड़बड़ियां ठीक की गईं
- अब 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 की नई सुविधाएं
- Kotlin कोरूटीन और फ़्लो के लिए फ़र्स्ट-क्लास सपोर्ट.
- coroutines सस्पेंड फ़ंक्शन, RxJava सिंगल या Guava गैर-ज़रूरी इनपुट के लिए, एक साथ काम नहीं करने वाली लोडिंग के साथ काम करता है.
- रिस्पॉन्सिव यूज़र इंटरफ़ेस (यूआई) डिज़ाइन के लिए पहले से मौजूद लोड होने की स्थिति और गड़बड़ी के सिग्नल, जिसमें फिर से कोशिश करने और रीफ़्रेश करने की सुविधा भी शामिल है.
- डेटा स्टोर करने की जगह की लेयर में सुधार
- डेटा सोर्स का आसान इंटरफ़ेस
- आसान नेटवर्क + डेटाबेस को पेजों में बांटना
- सदस्यता रद्द करने के बारे में सहायता
- प्रज़ेंटेशन लेयर में सुधार
आम समस्याएं
- पेजिंग 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