पृष्ठांकन
इस टेबल में, androidx.paging ग्रुप में मौजूद सभी आर्टफ़ैक्ट की सूची दी गई है.
| सह-प्रॉडक्ट | स्टेबल वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| paging-* | 3.5.3 | - | - | - |
| paging-compose | 3.5.3 | - | - | - |
डिपेंडेंसी का एलान करना
Paging पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { def paging_version = "3.5.3" 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.5.3" }
Kotlin
dependencies { val paging_version = "3.5.3" 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.5.3") }
Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 3.5
वर्शन 3.5.3
12 अक्टूबर, 2026
androidx.paging:paging-*:3.5.3 रिलीज़ हो गया है. वर्शन 3.5.3 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब
RemoteMediatorकिसी भी दिशा में पेजेशन के आखिर तक पहुंच जाता है और हेडर या फ़ुटर को टर्मिनल सेपरेटर में बदल दिया जाता है, तबItemSnapshotListFlowअबIllegalArgumentExceptionको थ्रो नहीं करेगा. (I821c7, b/566336825) - जब लोड किए गए पेज
PagingConfig.maxSizeसे ज़्यादा हो जाते हैं, तो लोड किए गए पेज दो से कम नहीं होंगे. इससे यह पक्का किया जा सकेगा कि व्यूपोर्ट में डेटा सही तरीके से भरा गया है. (I037a0, b/565835910)
बाहरी योगदान
गड़बड़ी को ठीक करने के लिए Igor को धन्यवाद. गड़बड़ी को ठीक करने से जुड़ी जानकारी b/565835910 में दी गई है
वर्शन 3.5.2
07 अक्टूबर, 2026
androidx.paging:paging-*:3.5.2 रिलीज़ हो गया है. वर्शन 3.5.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- शुरुआती रीफ़्रेश पूरा होने से पहले
Pager.append()कॉल करने पर, अबNoSuchElementExceptionनहीं दिखेगा. अपेंड कॉल काम नहीं करेगा. (Ide387, b/556780796)
वर्शन 3.5.1
12 अगस्त, 2026
androidx.paging:paging-*:3.5.1 रिलीज़ हो गया है. वर्शन 3.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- प्लेसहोल्डर में स्क्रोल करते समय, सेपरेटर वाले पेज को रीफ़्रेश करने पर, गलत
anchorPositionदेने वालीPagingSource.getRefreshKeyको ठीक किया गया. यह बहुत बड़ी है. (I475f0, b/516565503)
वर्शन 3.5.0
6 मई, 2026
androidx.paging:paging-*:3.5.0 रिलीज़ हो गया है. वर्शन 3.5.0 में ये बदलाव शामिल हैं.
3.4.0 के बाद किए गए अहम बदलाव:
Flow<PagingData>कोFlow<ItemSnapshotList>में बदलने के लिए,Flow<PagingData>.asItemSnapshotListFlowऑपरेटर जोड़ा गया. इसका मतलब है कि लोड किए गए डेटा को अब यूज़र इंटरफ़ेस (यूआई) लेयर के बाहर से ऐक्सेस किया जा सकता है. इससे आपकोFlow<ItemSnapshotList>को अन्य डेटा सोर्स के साथ जोड़ने, पेज किए गए डेटा को कैश मेमोरी में सेव करने, और उसमें स्थानीय तौर पर बदलाव करने की सुविधा मिलती है. इसके अलावा, पेज किए गए डेटा को यूज़र इंटरफ़ेस (यूआई) की स्थिति के हिस्से के तौर पर दिखाने के साथ-साथ और भी बहुत कुछ किया जा सकता है.बिना स्क्रोल किए, मैन्युअल तरीके से ज़्यादा डेटा लोड करने के लिए, एक्सटेंशन फ़ंक्शन
Pager.appendऔरPager.prependजोड़े गए.asItemSnapshotListFlowएपीआई का इस्तेमाल करते समय, लोड करने से जुड़ी गड़बड़ियों को ठीक करने के लिए, एक्सटेंशन फ़ंक्शनPager.refreshऔरPaging.retryजोड़े गए.
वर्शन 3.5.0-rc01
22 अप्रैल, 2026
androidx.paging:paging-*:3.5.0-rc01 रिलीज़ हो गया है. वर्शन 3.5.0-rc01 में ये बदलाव शामिल हैं.
कोई बदलाव नहीं
- वर्शन
3.5.0-beta01के बाद से कोई खास बदलाव नहीं किया गया है.
वर्शन 3.5.0-beta01
08 अप्रैल, 2026
androidx.paging:paging-*:3.5.0-beta01 रिलीज़ हो गया है. वर्शन 3.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Flow<PagingData>.asStateएपीआई का नाम बदलकरFlow<PagingData>.asItemSnapshotListFlowकर दिया गया है (I0dc11, b/496548025)
वर्शन 3.5.0-alpha01
11 मार्च, 2026
androidx.paging:paging-*:3.5.0-alpha01 रिलीज़ हो गया है. वर्शन 3.5.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
paging-commonआर्टफ़ैक्ट में अबFlow<PagingData>पर एक नयाasStateफ़्लो ऑपरेटर शामिल है, ताकि इसेFlow<ItemSnapshotList>में बदला जा सके. इससे ये काम किए जा सकते हैं:ItemSnapshotListके फ़्लो को अन्य डेटा सोर्स के साथ जोड़नाcachedInके बिना, कई कलेक्टर के साथ फ़्लो शेयर करना- पेज किए गए डेटा को स्थानीय तौर पर कैश मेमोरी में सेव करना
- मेमोरी में मौजूद पेज किए गए डेटा में बदलाव करना
- पेज में बंटे डेटा को यूज़र इंटरफ़ेस (यूआई) की स्थिति के तौर पर दिखाना
// In your ViewModel val pager = Pager(pagingConfig, pagingSourceFactory) val pagerFlow = pager.flow.asState() // alterantively convert the flow to a SharedFlow val pagerFlow = pager.flow.asState().stateIn() // In presenter layer val snapshotFlow = viewModel.pagerFlow.collectAsStateWithLifecycle(initialList) val snapshot = itemsFlow.value LazyColumn { items(items = snapshot.items) { ... } }paging-commonआर्टफ़ैक्ट में,Pager.appendऔरPager.prependएपीआई भी जोड़े गए हैं. इनकी मदद से, लोड किए गए आइटम के किसी भी किनारे पर लोड को मैन्युअल तरीके से ट्रिगर किया जा सकता है.paging-runtimeयाpaging-composeके साथ इस्तेमाल करने पर, स्क्रोल करने के अलावा ज़्यादा डेटा लोड करने का विकल्प मिलता है- नए
asStateएपीआई के साथ इस्तेमाल करने पर, ज़्यादा डेटा लोड करने का यही एकमात्र तरीका है
LazyColumn { item { /** * Load more items when users scroll near the top of loaded items. */ LaunchedEffect(viewModel) { viewModel.prepend() } } items(snapshot.items) { item -> Text("Item: $item") } item { /** * Load more items when users scroll near the bottom of loaded items. */ LaunchedEffect(viewModel) { viewModel.append() } } }asStateएपीआई का इस्तेमाल करते समय, लोड होने से जुड़ी गड़बड़ियों को ठीक करने के लिए,Pager.refreshऔरPager.retryको जोड़ा गया. नए एपीआई के इस्तेमाल के ज़्यादा उदाहरण देखने के लिए, यह दस्तावेज़ देखें. (I1e1e9, If3c87, Idbd48, Id1e1d, I816fe)
वर्शन 3.4
वर्शन 3.4.2
11 मार्च, 2026
androidx.paging:paging-*:3.4.2 रिलीज़ हो गया है. वर्शन 3.4.2 में ये कमिट शामिल हैं.
कोई बदलाव नहीं
- इस रिलीज़ में, वर्शन 3.4.1 के मुकाबले एपीआई या व्यवहार में कोई बदलाव नहीं किया गया है.
वर्शन 3.4.1
11 फ़रवरी, 2026
androidx.paging:paging-*:3.4.1 रिलीज़ हो गया है. वर्शन 3.4.1 में ये कमिट शामिल हैं.
डिपेंडेंसी अपडेट
- paging-guava की guava डिपेंडेंसी को वर्शन 31.1 से 32.0.1 पर अपडेट किया गया.
वर्शन 3.4.0
28 जनवरी, 2026
androidx.paging:paging-*:3.4.0 रिलीज़ हो गया है. वर्शन 3.4.0 में ये बदलाव शामिल हैं.
3.3.0 के बाद किए गए अहम बदलाव:
paging-common,paging-testing, औरpaging-composeमें ज़्यादा केएमपी टारगेट जोड़े गए. अब ये सभी प्लैटफ़ॉर्म पर काम करते हैं: जेवीएम(Android और डेस्कटॉप), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW), और Web (JavaScript, WasmJS)paging-common,paging-testing, औरpaging-composeनेmacosX64,iosX64,watchosX64, औरtvosX64के लिए सहायता बंद कर दी है, ताकि macosX64 टारगेट के लिए Jetbrains की सहायता बंद करने के साथ तालमेल बिठाया जा सके.- टारगेट पोज़िशन के सबसे नज़दीक मौजूद और इनपुट प्रेडिकेट से मैच करने वाले लोड किए गए आइटम को वापस पाने के लिए, एक नया
PagingStateएपीआईclosestItemAroundPositionजोड़ा गया. इसका इस्तेमाल, आइटम के आधार पर रीफ़्रेश बटन जनरेट करने के लिए किया जा सकता है. ऐसा तब किया जाता है, जब ऐंकर किया जा सकने वाला आइटम आस-पास मौजूद हो, लेकिन टारगेट की गई जगह पर न हो.
वर्शन 3.4.0-rc01
14 जनवरी, 2026
androidx.paging:paging-*:3.4.0-rc01 रिलीज़ हो गया है. वर्शन 3.4.0-rc01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Jetbrains की ओर से macosX64 टारगेट के बंद होने की वजह से, इन केएमपी प्लैटफ़ॉर्म के लिए सहायता हटा दी गई है:
macosX64,iosX64,watchosX64, औरtvosX64. (7cb9a4)
वर्शन 3.4.0-beta01
17 दिसंबर, 2025
androidx.paging:paging-*:3.4.0-beta01 रिलीज़ हो गया है. वर्शन 3.4.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
RecyclerViewऔरRefreshके लोड होने के बीच की रेस को ठीक करें. इसकी वजह से,RecyclerViewमेंIndexOutOfBoundsExceptionकी समस्या होती है.Refreshके लगातार लोड होने की वजह से, यूज़र इंटरफ़ेस (यूआई) के अपडेट में रुकावट आ सकती है. इससे पेजिंग की स्थिति,RecyclerViewके साथ सिंक नहीं हो पाती. अगर रीफ़्रेश करने की प्रोसेस में रुकावट आती है, तो पेजिंग को रीफ़्रेश करने से पहले की स्थिति पर रीसेट करके इसे ठीक किया जाता है. जैसे, लगातारRefreshलोड होने की वजह से. (I771b0, b/409809768)
वर्शन 3.4.0-alpha04
10 सितंबर, 2025
androidx.paging:paging-*:3.4.0-alpha04 रिलीज़ हो गया है. वर्शन 3.4.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टारगेट पोज़िशन के सबसे नज़दीक मौजूद और इनपुट प्रेडिकेट से मैच करने वाले लोड किए गए आइटम को वापस पाने के लिए, एक नया
PagingStateएपीआईclosestItemAroundPositionजोड़ा गया. इसका इस्तेमाल, आइटम के हिसाब से रीफ़्रेश बटन जनरेट करने के लिए किया जा सकता है. ऐसा तब किया जाता है, जब ऐंकर किया जा सकने वाला आइटम आस-पास मौजूद हो, लेकिन टारगेट की गई जगह पर न हो. (I96e5c, b/440187139)
वर्शन 3.4.0-alpha03
27 अगस्त, 2025
androidx.paging:paging-*:3.4.0-alpha03 रिलीज़ हो गया है. वर्शन 3.4.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Paging-common ने डेस्कटॉप को नए Kotlin Multiplatform (केएमपी) टारगेट के तौर पर जोड़ा है. अब यह जेवीएम(Android और डेस्कटॉप), नेटिव (Linux, iOS, watchOS, tvOS, macOS, MinGW), और वेब (JavaScript, WasmJS) पर काम करता है. (Id2483, b/436884811)
- Paging-testing में नए Kotlin Multiplatform (केएमपी) टारगेट जोड़े गए हैं. अब यह जेवीएम(Android और डेस्कटॉप), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW), और Web (JavaScript, WasmJS) पर काम करता है. (I0c543, b/435014650)
- Paging-compose में नए Kotlin Multiplatform (केएमपी) टारगेट जोड़े गए हैं. अब यह जेवीएम(Android और डेस्कटॉप), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW), और Web (JavaScript, WasmJS) पर काम करता है. (I70d44, b/436884801)
एपीआई में हुए बदलाव
- डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)
वर्शन 3.4.0-alpha02
30 जुलाई, 2025
androidx.paging:paging-*:3.4.0-alpha02 रिलीज़ हो गया है. वर्शन 3.4.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PagingData.fromमें अबplaceholdersBeforeऔरplaceholdersAfterसेट किया जा सकता है. ध्यान दें कि इन प्लेसहोल्डर को स्क्रोल करने से, लोड ट्रिगर नहीं होते. (I06983)
वर्शन 3.4.0-alpha01
2 जुलाई, 2025
androidx.paging:paging-*:3.4.0-alpha01 रिलीज़ हो गया है. वर्शन 3.4.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Paging ने ये केएमपी टारगेट जोड़े हैं: watchos, tvos, mingwX64, watchosDeviceArm64, और linuxArm64. (I237dd, Ia62b3, b/368046982, Icf15d, b/364652024, I139d3, b/338268719)
गड़बड़ियां ठीक की गईं
- Paging 3.3 या इसके बाद के वर्शन में Android यूनिट टेस्ट, अब
PagingLoggerसे थ्रो नहीं करेंगे (Ia9400, b/331684448) - उस गड़बड़ी को ठीक किया गया है जिसमें
RecyclerViewको अपडेट करते समय स्क्रोल करने पर,RecyclerViewसेIndexOutOfBoundsExceptionथ्रो होता था (Id1f16, b/381024738) - उस गड़बड़ी को ठीक किया गया है जिसकी वजह से स्क्रोल करते समय रीफ़्रेश करने पर, पेजिंग ज़्यादा लोड ट्रिगर नहीं कर पा रही थी. (I60ca5, b/352586078)
- पेजिंग आइटम रीफ़्रेश करते समय स्क्रोल करने पर, ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया. (I8c65a, b/347649763)
वर्शन 3.3
वर्शन 3.3.6
12 फ़रवरी, 2025
androidx.paging:paging-*:3.3.6 रिलीज़ हो गया है. वर्शन 3.3.6 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- शुरुआती रीफ़्रेश के दौरान भेजे गए रीफ़्रेश और फिर से कोशिश करने के सिग्नल अब सेव किए जाएंगे. साथ ही, पेजिंग प्रेजेंटर तैयार होने के बाद, उन्हें अपने-आप फिर से भेजा जाएगा.
बाहरी योगदान
वर्शन 3.3.5
11 दिसंबर, 2024
androidx.paging:paging-*:3.3.5 रिलीज़ हो गया है. वर्शन 3.3.5 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से
RecyclerViewको अपडेट करते समय स्क्रोल करने पर,RecyclerViewमेंIndexOutOfBoundsExceptionदिखता था. (Id1f16, b/381024738)
वर्शन 3.3.4
13 नवंबर, 2024
androidx.paging:paging-*:3.3.4 रिलीज़ हो गया है. वर्शन 3.3.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android की यूनिट टेस्ट में Paging 3.3 या इसके बाद के वर्शन का इस्तेमाल करने पर, अब
Method isLoggable in android.util.Log not mockedजैसी गड़बड़ी नहीं दिखेगी. (Ia9400, b/331684448)
वर्शन 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अब एक सार्वजनिक क्लास है. अब मल्टीप्लैटफ़ॉर्म प्रज़ेंटर,PagingDataPresenterके आधार पर बनाए जा सकते हैं. इसके लिए, इंटरनल पेजिंग एपीआई याpaging-runtimeकेAsyncPagingDataDifferकी ज़रूरत नहीं होती.hasErrorऔरisIdleमें नएLoadStatesऔरCombinedLoadStatesहेल्पर तरीके जोड़े गए हैं. इनसे यह पता लगाया जा सकता है किLoadStates, गड़बड़ी याNotLoadingकी स्थिति में है या नहीं. इसके अलावा,Flow<CombinedLoadStates>पर एक नयाawaitNotLoading()Kotlin एक्सटेंशन मेथड भी जोड़ा गया है. यह तब तक इंतज़ार करता है, जब तक कि लोडNotLoadingया गड़बड़ी की स्थिति में न पहुंच जाए.PagingData.empty()अब डिफ़ॉल्ट रूप सेNotLoadingस्टेटस डिस्पैच करता है. हालांकि, अगर इसके कंस्ट्रक्टर को कस्टमLoadStatesपास किए जाते हैं, तो ऐसा नहीं होता. यह मौजूदा तरीके से अलग है. मौजूदा तरीके में, कोPagingDataAdapterमें सबमिट करने पर,LoadStatesनहीं भेजा जाता है. इसके अलावा,LazyPagingItemsके तौर पर इकट्ठा किए जाने पर, लोडिंग की स्थितियां भेजी जाती हैं.LazyPagingItemsके तौर पर इकट्ठा किए जाने पर, अब यह शुरुआती कंपोज़िशन पर तुरंत एक खाली सूची भी दिखाएगा.
Kotlin Multiplatform के साथ काम करने की सुविधा
Paging अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट उपलब्ध कराता है. ऐसा CashApp के multiplatform-paging प्रोजेक्ट के अपस्ट्रीम किए गए काम की वजह से हुआ है.
paging-commonने सभी Paging 3 एपीआई कोcommonपर माइग्रेट कर दिया है. अब यह Android के साथ-साथ, जेवीएम और 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 को Paging 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अब एक सार्वजनिक क्लास है. मल्टीप्लैटफ़ॉर्म प्रज़ेंटर को अबPagingDataPresenterके ऊपर बनाया जा सकता है. इसके लिए, इंटरनल पेजिंग एपीआई याpaging-runtimeकेAsyncPagingDataDifferकी ज़रूरत नहीं है. (Id1f74, b/315214786)LoadStatesऔरCombinedLoadStatesहेल्पर के नए तरीके जोड़े गए हैं. इनसे यह पता लगाया जा सकता है किLoadStates, Error याNotLoadingस्टेट में है या नहीं. हमने एक नया एपीआई भी जोड़ा है. यहLoadStateFlowपर तब तक इंतज़ार करता है, जब तक कि लोडNotLoadingया गड़बड़ी वाली स्थिति में सेटल नहीं हो जाता. (Id6c67)
व्यवहार में बदलाव
PagingData.empty()अब डिफ़ॉल्ट रूप सेNotLoadingकी स्थितियां भेजता है. हालांकि, कस्टमLoadStatesको इसके कंस्ट्रक्टर में पास किया जाता है. यह मौजूदा तरीके से अलग है. इसमें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 Multiplatform के साथ काम करने की सुविधा
Paging अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट उपलब्ध कराता है. इसके लिए, CashApp के multiplatform-paging प्रोजेक्ट से मिले अपस्ट्रीम किए गए काम का काफ़ी हद तक इस्तेमाल किया गया है. इससे हम दो रिपॉज़िटरी के बीच अंतर को कम कर पाएंगे और उन्हें एक-दूसरे के साथ काम करने लायक बना पाएंगे.
paging-commonने सभी Paging 3 एपीआई कोcommonपर माइग्रेट कर दिया है. अब यह Android के साथ-साथ, जेवीएम और iOS के साथ भी काम करता है.paging-testingने अपना कोडcommonपर माइग्रेट कर दिया है. अब यह Android के साथ-साथ, JVM और iOS के साथ भी काम करता है.paging-composeने अपना कोडcommonपर माइग्रेट कर दिया है और Android आर्टफ़ैक्ट को शिप किया है. यहandroidx.composeके मल्टीप्लैटफ़ॉर्म सपोर्ट से मैच करता है.paging-runtime,paging-guava,paging-rxjava2, औरpaging-rxjava3सिर्फ़ Android पर उपलब्ध रहेंगे.
एपीआई में हुए बदलाव
- सार्वजनिक Logger इंटरफ़ेस को बंद कर दिया गया है. इसका इस्तेमाल सिर्फ़ इंटरनल तौर पर किया जाता था (I16e95, b/288623117)
बाहरी योगदान
- Cash App के veyndan को धन्यवाद. उन्होंने Paging को Kotlin Multiplatform पर माइग्रेट करने में मदद की है (#560, #561, #562, #573, #576, #577, #578, #579, #580, #581, #583, #584, #586, #609)
वर्शन 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी समस्या को ठीक किया है जिसमें
PagingData.from(List)का इस्तेमाल करके बनाए गए फ़्लो को पास करने पर, Paging Testing आर्टफ़ैक्ट काasSnapshot()एपीआई हैंग हो जाता था. ऐसा इसलिए होता था, क्योंकिasSnapshot()के पास यह जानकारी नहीं होती थी कि डेटा लोड होना कब पूरा होगा. हालांकि,PagingData.from(List, LoadStates)ओवरलोड के मामले में ऐसा नहीं होता था. यह तरीका सिर्फ़ उन Flows के लिए काम करता है जिन्हें पूरा किया जा सकता है (जैसे,flowOf(PagingData.from(...))). जिन Flows को पूरा नहीं किया जा सकता (जैसे,MutableStateFlow), उनके लिएPagingData.fromओवरलोड का इस्तेमाल करें, जोLoadStatesउपलब्ध कराता है. (I502c3) - Paging Compose अब अंदरूनी तौर पर
AndroidUiDispatcher.Mainका इस्तेमाल करता है. इससे यह पक्का किया जाता है कि नया डेटा उसी फ़्रेम में उपलब्ध हो जिसमें डेटा लोड हो रहा है. (Ia55af)
वर्शन 3.2.0
26 जुलाई, 2023
androidx.paging:paging-*:3.2.0 रिलीज़ हो गया है. वर्शन 3.2.0 में ये बदलाव शामिल हैं.
3.1.0 के बाद किए गए अहम बदलाव
- Paging Compose, एपीआई के स्टेबल वर्शन पर पहुंच गया है. इसे वापस Paging में मर्ज कर दिया गया है. अब इसका वर्शन, Paging के अन्य सभी आर्टफ़ैक्ट से मेल खाता है. वर्शन 3.1.0 के बाद किए गए बदलावों में ये शामिल हैं:
PagingData.from(fakeData)बनाकर और उसेPagingDataMutableStateFlowमें रैप करके, नकली डेटा की सूची की झलक देखने की सुविधा. जैसे,MutableStateFlow(PagingData.from(listOf(1, 2, 3))). इस फ़्लो को@Previewकंपोज़ेबल में पास करें, ताकिcollectAsLazyPagingItems()की झलक देखी जा सके.LazyVerticalGridऔरHorizontalPagerजैसे सभी लेज़ी लेआउट के साथ-साथ, Wear और TV लाइब्रेरी के कस्टम लेज़ी कॉम्पोनेंट के लिए सहायता. ऐसा करने के लिए, हमने नए लोअर लेवलLazyPagingItemsएक्सटेंशन मेथडitemKeyऔरitemContentTypeका इस्तेमाल किया. इनकी मदद से,keyऔरcontentTypeपैरामीटर को स्टैंडर्डitemsएपीआई में लागू किया जा सकता है. ये एपीआई,LazyColumnऔरLazyVerticalGridके लिए पहले से मौजूद हैं. साथ ही,HorizontalPagerजैसे एपीआई में भी ये पैरामीटर लागू किए जा सकते हैं.items(lazyPagingItems)औरitemsIndexed(lazyPagingItems)को बंद कर दिया गया है. ये सिर्फ़LazyListScopeके साथ काम करते थे.
- नया
paging-testingआर्टफ़ैक्ट, जो आपके ऐप्लिकेशन की हर लेयर की यूनिट टेस्टिंग और Paging के साथ उसके इंटिग्रेशन के लिए डिज़ाइन किए गए एपीआई उपलब्ध कराता है. उदाहरण के लिए, इसमें ये शामिल हैंTestPagerक्लास, जो आपको Pager और असल यूज़र इंटरफ़ेस (यूआई) से अलग, अपने कस्टमPagingSourceलागू करने के तरीके की पुष्टि करने की सुविधा देती है.-
asPagingSourceFactoryएपीआई, जोFlow<List<Value>>या स्टैटिकList<Value>कोPagingSourceFactoryमें बदल सकते हैं. इससे टेस्ट में Pager को पास किया जा सकता है Flow<PagingData<Value>>परasSnapshotKotlin एक्सटेंशन, जोFlow<PagingData<Value>>को सीधेList<Value>में बदल देता है.asSnapshot lambdaकी मदद से,scrollToयाappendScrollWhileजैसे एपीआई के ज़रिए अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) की नकल की जा सकती है. इससे, पेज वाले डेटा के सेट में किसी भी समय, डेटा के स्नैपशॉट की पुष्टि की जा सकती है.
- पेजिंग को डीबग करने की जानकारी को दो लेवल पर दिखाने के लिए, डिफ़ॉल्ट लॉग जोड़े गए हैं:
VERBOSEऔरDEBUG. लॉग कोadb shell setprop log.tag.Paging [DEBUG|VERBOSE]कमांड का इस्तेमाल करके चालू किया जा सकता है. यह व्यू के साथ पेजिंग या Compose के साथ पेजिंग, दोनों पर लागू होता है. PagingDataAdapterऔरAsyncPagingDataDifferके लिए कंस्ट्रक्टर जोड़े गए हैं. येCoroutineDispatcherके बजायCoroutineContextस्वीकार करते हैं.- एक नया
PagingSourceFactoryफ़ंक्शनल इंटरफ़ेस जोड़ा गया है. यह पिछले () ->PagingSourceलैम्ब्डा की तुलना में, ज़्यादा साफ़ तौर पर एपीआई सरफ़ेस उपलब्ध कराता है. इस फ़ैक्ट्री का इस्तेमाल, Pager को इंस्टैंशिएट करने के लिए किया जा सकता है.
वर्शन 3.2.0-rc01
21 जून, 2023
androidx.paging:paging-*:3.2.0-rc01 रिलीज़ हो गया है. वर्शन 3.2.0-rc01 में ये बदलाव शामिल हैं.
बाहरी योगदान
- Veyndan को धन्यवाद. उन्होंने Paging को 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
- Paging Compose, अब एपीआई के लिए स्टेबल वर्शन में उपलब्ध है. इसलिए, इस वर्शन को
1.0.0-alpha20से अपडेट कर दिया गया है, ताकि यह सभी अन्य पेजिंग आर्टफ़ैक्ट के वर्शन से मेल खाए.
एपीआई में हुए बदलाव
- Paging Compose से, अब काम न करने वाले
items(LazyPagingItems)औरitemsIndexed(LazyPagingItems)एपीआई हटा दिए गए हैं. इनकी जगह इस्तेमाल किए जाने वाले एपीआई का उदाहरण देखने के लिए, Paging Compose1.0.0-alpha20के रिलीज़ नोट देखें. (I9626e)
वर्शन 3.2.0-alpha06
24 मई, 2023
androidx.paging:paging-*:3.2.0-alpha06 रिलीज़ हो गया है. वर्शन 3.2.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक नया
PagingSourceFactoryफ़ंक्शनल इंटरफ़ेस जोड़ा गया है. यह मौजूदा() -> PagingSourceलैम्डा की तुलना में, एपीआई के बारे में ज़्यादा जानकारी देता है. इस फ़ैक्ट्री का इस्तेमाल,Pagerको इंस्टैंशिएट करने के लिए किया जा सकता है. (I33165, b/280655188) paging-testingका नयाList<Value>.asPagingSourceFactory()जोड़ा गया है, ताकिPagingSourceFactoryमिल सके. यह सिर्फ़ डेटा की ऐसी सूची से लोड होता है जिसे बदला नहीं जा सकता.Flow<List<Value>>पर मौजूद एक्सटेंशन का इस्तेमाल, स्टैटिक डेटा की कई जनरेशन के साथ टेस्टिंग के लिए किया जाना चाहिए. (Id34d1, b/280655188)
एपीआई में हुए बदलाव
- पेजिंग-टेस्टिंग में मौजूद सभी सार्वजनिक एपीआई को अब
@VisibleForTestingके साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि इन एपीआई का इस्तेमाल सिर्फ़ टेस्ट में किया जाए. (I7db6e) asSnapshotAPI में अबCoroutineScopeपास करने की ज़रूरत नहीं है. अब यह डिफ़ॉल्ट रूप से, अपने पैरंट स्कोप से इनहेरिट किए गए कॉन्टेक्स्ट का इस्तेमाल करता है. (Id0a78, b/282240990)TestPagerकंस्ट्रक्टर पैरामीटर को फिर से क्रम में लगाया गया, ताकि वे असलPagerकंस्ट्रक्टर पैरामीटर के क्रम से मैच कर सकें (I6185a)- पेजिंग-टेस्टिंग में लैम्ब्डा टाइप
() -> PagingSource<Key, Value>के इस्तेमाल को टाइपPagingSourceFactory<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के Paging Testing API में, अबloadOperationsपैरामीटर की डिफ़ॉल्ट वैल्यू को खाली लैम्डा पर सेट कर दिया गया है. इससे, शुरुआती रीफ़्रेश लोड से डेटा वापस पाने के लिए, किसी भी लोड ऑपरेशन को पास किए बिनाasSnapshotको कॉल किया जा सकता है. (Ied354, b/277233770)
दस्तावेज़ों में किए गए सुधार
asPagingSourceFactory()के दस्तावेज़ को अपडेट किया गया है. इससे यह साफ़ तौर पर पता चलता है कि यहFlowपर एक एक्सटेंशन तरीका है. यहPagingSourceइंस्टेंस जनरेट करने के लिए, दोबारा इस्तेमाल की जा सकने वाली फ़ैक्ट्री दिखाता है. (I5ff4f, I705b5)LoadResult.Pageकंस्ट्रक्टर के दस्तावेज़ को अपडेट किया गया, ताकि यह साफ़ तौर पर बताया जा सके कि जंपिंग की सुविधा के लिए,itemsBeforeऔरitemsAfterको ओवरराइड करना ज़रूरी है. (Ied354)
बाहरी योगदान
- Veyndan को धन्यवाद. उन्होंने Paging को 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बनाया जा सकता है, ताकि उसे Pager को दिया जा सके. Flow से उत्सर्जित होने वाला हरList<Value>>, पेज पर मौजूद डेटा की जनरेशन को दिखाता है. इससे, पेजिंग की जांच करना आसान हो जाता है. उदाहरण के लिए,PagingDataट्रांसफ़ॉर्मेशन के लिए, Pager के लिए फ़र्ज़ी डेटा सोर्स बनाकर डेटा इकट्ठा किया जा सकता है. (I6f230, b/235528239)paging-testingआर्टफ़ैक्ट को नए एपीआई के साथ बड़ा किया गया है. ये एपीआई,Flow<PagingData<T>>में मौजूद डेटा की पुष्टि करने के लिए सही हैं. उदाहरण के लिए, इसका इस्तेमाल आपकी ViewModel लेयर सेFlow<PagingData<T>>के आउटपुट को दिखाने के लिए किया जा सकता है.ऐसा
Flow<PagingData<Value>>परasSnapshotKotlin एक्सटेंशन के ज़रिए किया जाता है. यहFlow<PagingData<Value>>को सीधेList<Value>में बदल देता है.asSnapshotलैंबडा की मदद से, अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) को एपीआई के ज़रिए कॉपी किया जा सकता है. जैसे,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 valuesasSnapshot,suspendतरीका है. इसेrunTestके अंदर चलाया जाना चाहिए. ज़्यादा जानकारी के लिए, Android पर Kotlin कोरूटीन की जांच करना लेख पढ़ें. (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, Ic1238, I96def, b/235528239)
एपीआई में हुए बदलाव
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. यह आर्टफ़ैक्ट, ऐसे एपीआई उपलब्ध कराता है जिन्हें आपके ऐप्लिकेशन की हर लेयर की यूनिट टेस्टिंग के लिए डिज़ाइन किया गया है. साथ ही, इसमें Paging के साथ इंटिग्रेशन की सुविधा भी मिलती है.
उदाहरण के लिए, इस पहली रिलीज़ में एक TestPager क्लास शामिल है. इसकी मदद से, अपने कस्टम PagingSource लागू करने के तरीके की पुष्टि की जा सकती है. इसके लिए, आपको Pager और असल यूज़र इंटरफ़ेस (यूआई) की ज़रूरत नहीं होती. आम तौर पर, आपको एंड-टू-एंड पेजिंग इंटिग्रेशन को सिम्युलेट करने के लिए, इनकी ज़रूरत होती है.
TestPager को फ़ेक माना जाना चाहिए - यह एक टेस्ट डबल है, जो Pager के असल इंप्लिमेंटेशन को दिखाता है. साथ ही, PagingSource की जांच करने के लिए, आसान एपीआई सरफ़ेस उपलब्ध कराता है. ये एपीआई, suspend एपीआई हैं. इन्हें runTest में चलाया जाना चाहिए, जैसा कि Android पर Kotlin कोरूटीन की जांच करना गाइड में बताया गया है.
इन एपीआई के इस्तेमाल का एक उदाहरण room-paging टेस्ट में देखा जा सकता है. इन्हें TestPager का इस्तेमाल करने के लिए फिर से तैयार किया गया था.
एपीआई में हुए बदलाव
LoadResult.Page.iterator()की मदद से,LoadResult.Page.dataपर आसानी से बार-बार काम करने की सुविधा मिलती है. इससेPagingSource.getRefreshKeyतरीके को पास किए गएPagingStateकीpagesप्रॉपर्टी जैसेList<LoadResult.Page>दिए जाने पर, Kotlin स्टैंडर्ड लाइब्रेरीflattenतरीके का इस्तेमाल किया जा सकता है. (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-common:3.2.0-alpha01को रनटाइमpaging-runtime:3.1.1या इससे पुराने वर्शन के साथ इस्तेमाल करते समय,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पास नहीं किए जाते हैं, तो स्टैटिकPagingDataमिलने पर, प्रज़ेंटर की ओर से पिछलेCombinedLoadStatesको बनाए रखा जाएगा. (Ic3ce5, b/205344028)
गड़बड़ियां ठीक की गईं
- अब
PagingSource.getRefreshKey()के नतीजे कोinitialKeyके मुकाबले सही तरीके से प्राथमिकता दी जाती है. ऐसा उन मामलों में होता है जहां यह शून्य दिखाता है, लेकिन शून्य के अलावा कोई औरinitialKeyसेट किया गया हो. (Ic9542, b/230391606)
बाहरी योगदान
- test-coroutines-lib माइग्रेशन (I3366d) की वजह से, :compose:ui:ui-test एपीआई (updateApi) को अपडेट किया गया
वर्शन 3.1
वर्शन 3.1.1
9 मार्च, 2022
androidx.paging:paging-*:3.1.1 रिलीज़ हो गया है. वर्शन 3.1.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जनरेशन के बीच के इंटरमीडिएट
LoadState.NotLoadingइवेंट हटा दिए गए हैं. इन्हें.cachedIn()ने गलत तरीके से शामिल किया था. इस बदलाव से,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में होने वाले बदलाव:endOfPaginationReachedअबPagingSourceऔरRemoteMediator, दोनों के लिएLoadType.REFRESHकी सदस्यता लेने पर, हमेशाfalseमें उपलब्ध रहेगा- पेजिंग से
LoadStatesको अब डाउनस्ट्रीम में भेजने से पहले,PagingSourceऔरRemoteMediator, दोनों से मान्य वैल्यू का इंतज़ार करना होगा.PagingDataकी नई जनरेशन अब रीफ़्रेश स्टेट के लिए, हमेशाLoadingसे शुरू होंगी. कुछ मामलों में, ये गलत तरीके सेNotLoadingपर रीसेट नहीं होंगी. - प्रज़ेंटर एपीआई पर
.loadStateFlowऔर.addLoadStateListener, अब बार-बार शुरुआतीCombinedLoadStatesनहीं भेजते. इसमें मीडिएटर स्टेटस हमेशाnullपर सेट होता है
- पिछले जनरेशन के रद्द होने की प्रोसेस अब अमान्य होने / नए जनरेशन पर तुरंत होती है. अब
Flow<PagingData>पर.collectLatestका इस्तेमाल करने की ज़रूरत नहीं है. हालांकि, हमारा सुझाव है कि आप ऐसा करें. PagingSource.LoadResult.InvalidकोPagingSource.loadसे नए रिटर्न टाइप के तौर पर जोड़ा गया है. इस वजह से, पेजिंग इसPagingSourceके लिए, लोड करने के किसी भी अनुरोध को खारिज कर देती है. साथ ही, इसे अमान्य कर देती है. इस रिटर्न टाइप को डेटाबेस या नेटवर्क से मिलने वाले अमान्य या पुराने डेटा को मैनेज करने के लिए डिज़ाइन किया गया है..onPagesPresentedऔर.addOnPagesUpdatedListenerप्रज़ेंटर एपीआई जोड़े गए हैं. ये एपीआई, यूज़र इंटरफ़ेस (यूआई) में पेज दिखने के साथ ही ट्रिगर हो जाते हैं. पेज के अपडेट इन स्थितियों में हो सकते हैं:- PagingData की नई जनरेशन का शुरुआती लोड पूरा हो जाता है. भले ही, नई जनरेशन में दिखाए गए आइटम में कोई बदलाव हुआ हो या नहीं. जैसे, अगर नई जनरेशन की सूची में कोई बदलाव नहीं हुआ है, तो भी यह कॉलबैक ट्रिगर होगा.
- एक पेज शामिल किया जाता है, भले ही उसमें कोई नया आइटम न हो.
- किसी पेज को ड्रॉप किया गया हो, भले ही वह खाली हो.
वर्शन 3.1.0-rc01
3 नवंबर, 2021
androidx.paging:paging-*:3.1.0-rc01 रिलीज़ हो गया है. वर्शन 3.1.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- .cachedIn() में रेस कंडिशन और मेमोरी लीक की समस्या को ठीक किया गया. ऐसा उन मामलों में किया गया जहां Paging डाउनस्ट्रीम ने कई लोड इवेंट भेजे थे, लेकिन कोई ऑब्ज़र्वर नहीं था या जब कोई ऑब्ज़र्वर नए 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अब हमेशाfalseLoadType.REFRESHके लिए होता है. पहले, RemoteMediatorREFRESHके लिए endOfPaginationReached की वैल्यूtrueहो सकती थी, लेकिन PagingSource के लिए नहीं. इस व्यवहार को अब हमेशाfalseदिखाने के लिए कंसोलिडेट किया गया है, क्योंकि REFRESH के लिए टर्मिनल होना कभी भी सही नहीं होता. साथ ही, इसे अब LoadStates में एपीआई कॉन्ट्रैक्ट के हिस्से के तौर पर दस्तावेज़ में शामिल किया गया है. पेजिनेशन को खत्म करने का फ़ैसला लेते समय, आपको हमेशा APPEND या PREPEND में से किसी एक दिशा के हिसाब से ऐसा करना चाहिए. (I047b6) पेजिंग की LoadStates अब दोनों PagingSource और RemoteMediator से मान्य वैल्यू मिलने का इंतज़ार करती हैं. इसके बाद, जनरेशन के बीच डाउनस्ट्रीम में वैल्यू भेजती हैं. इससे PagingData की नई जनरेशन, CombinedLoadStates.source.refresh में NotLoading भेजने से बचती हैं. ऐसा तब होता है, जब वह पहले से ही लोड हो रहा हो. PagingData की नई जनरेशन, अब रीफ़्रेश की स्थिति के लिए हमेशा Loading से सही तरीके से शुरू होंगी. कुछ मामलों में, पहले NotLoading पर गलत तरीके से रीसेट करने की ज़रूरत नहीं होगी.
पिछली जनरेशन के लिए, रद्द करने की प्रोसेस अब अमान्य होने / नई जनरेशन के लिए तुरंत होती है. अब
Flow<PagingData>पर .collectLatest का इस्तेमाल करना ज़रूरी नहीं है. हालांकि, अब भी ऐसा करने का सुझाव दिया जाता है. (I0b2b5, b/177351336, b/195028524)प्रेज़ेंटर एपीआई पर
.loadStateFlowऔर.addLoadStateListenerअब शुरुआतीCombinedLoadStatesको बार-बार नहीं भेजते हैं. इसमें मीडिएटर की स्थितियां हमेशाnullपर सेट होती हैं और सोर्स की स्थितियांNotLoading(endOfPaginationReached = false)पर सेट होती हैं. इसका मतलब है कि:- अगर RemoteMediator का इस्तेमाल किया जाता है, तो मीडिएटर स्टेट हमेशा पॉप्युलेट होंगे.
.loadStateFlowपर नया loadState लिसनर या नया कलेक्टर रजिस्टर करने पर, अब मौजूदा वैल्यू तुरंत नहीं दिखेगी. ऐसा तब होगा, जबPagingDataसे कोई असलीCombinedLoadStatesनहीं मिला होगा. ऐसा तब हो सकता है, जबPagingDataसबमिट करने से पहले ही कोई कलेक्टर या लिसनर शुरू हो जाए. (I1a748)
वर्शन 3.1.0-alpha03
21 जुलाई, 2021
androidx.paging:paging-*:3.1.0-alpha03 रिलीज़ हो गया है. वर्शन 3.1.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PagingSource में, LoadResult का तीसरा रिटर्न टाइप LoadResult.Invalid जोड़ा गया है. जब PagingSource.load, LoadResult.Invalid दिखाता है, तो पेजिंग लोड किए गए डेटा को खारिज कर देगी और PagingSource को अमान्य कर देगी. इस रिटर्न टाइप को इस तरह डिज़ाइन किया गया है कि यह डेटाबेस या नेटवर्क से मिलने वाले अमान्य या पुराने डेटा को हैंडल कर सके.
उदाहरण के लिए, अगर डेटाबेस में डेटा लिखा जाता है, लेकिन PagingSource समय पर अमान्य नहीं होता है, तो हो सकता है कि वह अलग-अलग नतीजे दिखाए.ऐसा तब हो सकता है, जब PagingSource को लागू करने का तरीका, उस डेटासेट के इम्यूटेबिलिटी पर निर्भर करता हो जिससे वह डेटा लोड करता है. जैसे, LIMIT OFFSET स्टाइल वाले डेटाबेस को लागू करना. इस स्थिति में, हमारा सुझाव है कि लोड होने के बाद, अमान्य होने की जांच करें और LoadResult.Invalid को वापस करें. इससे Paging, इस PagingSource के लिए, लोड करने के किसी भी अनुरोध को खारिज कर देता है और उसे अमान्य कर देता है.
यह रिटर्न टाइप, Paging2 API के साथ भी काम करता है. यह एपीआई, LivePagedList या RxPagedList का इस्तेमाल करता है. Paging2 के PagedList API के साथ PagingSource का इस्तेमाल करने पर, PagedList तुरंत अलग हो जाता है. इससे इस PagedList पर डेटा लोड करने की कोशिशें रुक जाती हैं और PagingSource पर अमान्य होने की स्थिति ट्रिगर हो जाती है.
LoadResult एक सील की गई क्लास है. इसका मतलब है कि यह सोर्स के साथ काम न करने वाला बदलाव है. इसलिए, PagingSource.load के नतीजों का सीधे तौर पर इस्तेमाल करने वाले मामलों को कंपाइल के समय LoadResult.Invalid को मैनेज करना होगा. उदाहरण के लिए, Kotlin का इस्तेमाल करने वाले ऐसे लोग जो रिटर्न टाइप की जांच करने के लिए exhaustive-when का इस्तेमाल करते हैं उन्हें Invalid टाइप के लिए जांच जोड़नी होगी. (Id6bd3, b/191806126, b/192013267)
गड़बड़ियां ठीक की गईं
- PagingSource.registerInvalidatedCallback या DataSource.addInvalidatedCallback के ज़रिए जोड़े गए अमान्य होने के कॉलबैक, अब अपने-आप ट्रिगर हो जाते हैं. ऐसा तब होता है, जब उन्हें ऐसे PagingSource / DataSource पर रजिस्टर किया गया हो जो पहले से अमान्य है. इससे रेस कंडीशन की समस्या ठीक हो जाती है. इस वजह से, पेजिंग को अमान्य होने के सिग्नल नहीं मिलते थे और शुरुआती लोड के दौरान पहले से ही अमान्य सोर्स दिए जाने पर, वह अटक जाती थी. इसके अलावा, अमान्य करने वाले कॉलबैक को ट्रिगर होने के बाद अब ठीक से हटा दिया जाता है, क्योंकि उन्हें ज़्यादा से ज़्यादा एक बार कॉल किया जाता है. (I27e69)
- नए PagedList स्ट्रीम से प्लेसहोल्डर की शुरुआती वैल्यू (InitialPagedList) सबमिट करने पर, पहले से लोड किया गया डेटा अब नहीं मिटेगा. जैसे, LivePagedListBuilder या RxPagedListBuilder.
वर्शन 3.1.0-alpha02
1 जुलाई, 2021
androidx.paging:paging-*:3.1.0-alpha02 रिलीज़ हो गया है. वर्शन 3.1.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
onPagesPresented लिसनर और फ़्लो प्रज़ेंटर एपीआई जोड़े गए हैं. ये यूज़र इंटरफ़ेस (यूआई) में पेजों के अपडेट होने के तुरंत बाद ट्रिगर होते हैं.
ये अपडेट, यूज़र इंटरफ़ेस (यूआई) के साथ सिंक होते हैं. इसलिए, अपडेट लागू होने के बाद स्थिति की जांच करने के लिए, अडैप्टर के तरीकों को कॉल किया जा सकता है. जैसे, .snapshot, .getItemCount. ध्यान दें कि .snapshot() को साफ़ तौर पर कॉल करने के लिए छोड़ दिया गया था, क्योंकि हर अपडेट पर ऐसा करना महंगा हो सकता है.
पेज अपडेट इन स्थितियों में हो सकते हैं:
- PagingData की नई जनरेशन का शुरुआती लोड पूरा हो जाता है. भले ही, नई जनरेशन में दिखाए गए आइटम में कोई बदलाव हुआ हो या नहीं. जैसे, अगर कोई नई जनरेशन, बिना किसी अपडेट के शुरुआती लोड को पूरा करती है, तो भी यह कॉलबैक ट्रिगर होगा. ऐसा इसलिए, क्योंकि सूची बिलकुल वैसी ही है.
- एक पेज शामिल किया जाता है, भले ही उसमें कोई नया आइटम न हो
- पेज को हटा दिया जाता है, भले ही हटाया गया पेज खाली हो (I272c9, b/189999634)
गड़बड़ियां ठीक की गईं
- LivePagedList या RxPagedList से जनरेट की गई शुरुआती वैल्यू से PagedList.dataSource को ऐक्सेस करने पर, अब IllegalStateException (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 को no-op differ इवेंट भेजता था. इससे कुछ लिसनर पहले ही ट्रिगर हो जाते थे. (Ic507f, b/182510751)
बाहरी योगदान
- rxjava3 आर्टफ़ैक्ट में, बंद किए गए PagedList के साथ काम करने वाले एपीआई जोड़े गए (Id1ce2, b/182497591)
Paging Compose का वर्शन 1.0.0
वर्शन 1.0.0-alpha20
24 मई, 2023
androidx.paging:paging-compose:1.0.0-alpha20 रिलीज़ हो गया है. वर्शन 1.0.0-alpha20 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Paging Compose में अब नकली डेटा की सूची की झलक देखी जा सकती है.इसके लिए,
PagingData.from(fakeData)बनाएं और उसPagingDataकोMutableStateFlowमें रैप करें. उदाहरण के लिए,MutableStateFlow(PagingData.from(listOf(1, 2, 3))). उस डेटा को अपने@Previewमें इनपुट के तौर पर इस्तेमाल करने से,collectAsLazyPagingItems()को किए जाने वाले कॉल से, झलक देखने लायकLazyPagingItemsमिलेगा. (I8a78d, b/194544557)
गड़बड़ियां ठीक की गईं
LazyPagingItemsमें इकट्ठा किया गयाpager.flow.cachedInका कैश मेमोरी में सेव डेटा, अब एसिंक्रोनस कलेक्शन की ज़रूरत के बिना, स्टेट रीस्टोरेशन के तुरंत बाद उपलब्ध हो जाएगा. इसका मतलब है कि कैश मेमोरी में सेव किया गया डेटा, स्टेटस वापस आने के बाद शुरुआती कंपोज़िशन पर तुरंत प्रज़ेंटेशन के लिए तैयार हो जाएगा. (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 एक्सटेंशन उपलब्ध थे. इसका मतलब है कि Paging Compose का इस्तेमाल, अन्य लेज़ी लेआउट के साथ नहीं किया जा सकता था. जैसे, LazyVerticalGrid, HorizontalPager या Wear और TV लाइब्रेरी से मिले अन्य कस्टम लेज़ी कॉम्पोनेंट. इस रिलीज़ का मुख्य अपडेट, इस समस्या को हल करना है.
ज़्यादा लेज़ी लेआउट के साथ काम करने के लिए, हमें एक अलग लेयर पर एपीआई बनाने की ज़रूरत थी. हर लेज़ी लेआउट के लिए कस्टम items एपीआई उपलब्ध कराने के बजाय, Paging Compose अब itemKey और itemContentType में LazyPagingItems पर थोड़े कम लेवल के एक्सटेंशन तरीके उपलब्ध कराता है. इन एपीआई का मकसद, key और contentType पैरामीटर को स्टैंडर्ड items एपीआई में लागू करने में आपकी मदद करना है. ये एपीआई, LazyColumn और LazyVerticalGrid के साथ-साथ 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)
}
}
इन नए एपीआई को इस्तेमाल करने के ज़्यादा उदाहरणों के लिए, कृपया हमारे सैंपल देखें.
इन बदलावों की वजह से, LazyColumn और LazyRow के उदाहरण कुछ लाइन लंबे हो जाते हैं. हालांकि, हमें लगता है कि आने वाले समय में Paging Compose का इस्तेमाल करने वाले लोगों के लिए, सभी लेज़ी लेआउट में एक जैसा होना ज़रूरी है. इस वजह से, LazyListScope के मौजूदा एक्सटेंशन अब काम नहीं करते. (I0c459, I92c8f, b/276989796)
एपीआई में हुए बदलाव
- नए एपीआई पर माइग्रेट करने की प्रोसेस को आसान बनाने के लिए,
LazyListScopeपर मौजूदitemsऔरitemsIndexedएक्सटेंशन फ़ंक्शन अबcontentTypeपैरामीटर के साथ काम करते हैं. यह नए एपीआई में उपलब्ध सुविधा की तरह ही है. (Ib1918, b/255283378)
डिपेंडेंसी से जुड़े अपडेट
- Paging Compose ने अपनी डिपेंडेंसी को Compose 1.0.5 से Compose 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-compose:1.0.0-alpha15कोpaging-common:3.1.1या इससे पुराने वर्शन के साथ इस्तेमाल करने पर,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को सेट करता है, ताकिLoadState.Loadingरीफ़्रेश हो सके. (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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
items(lazyPagingItems)औरitemsIndexed(lazyPagingItems)का इस्तेमाल, पेजिंग कोLazyColumn/Rowसे कनेक्ट करने के लिए किया जाता था. अब ये विकल्प कुंजी पैरामीटर को स्वीकार करते हैं. इससे आपको आइटम को दिखाने वाली एक स्टेबल कुंजी तय करने की सुविधा मिलती है. कुंजियों के बारे में ज़्यादा जानने के लिए यहां जाएं. (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- LazyPagingItems के itemCount और आइटम गैटर को अब मॉनिटर किया जा सकता है. इससे, इसे LazyVerticalGrid के साथ भी इस्तेमाल किया जा सकता है (Ie2446, b/171872064, b/168285687)
Compose के साथ काम करने की सुविधा
androidx.paging:paging-compose:1.0.0-alpha09, सिर्फ़ Compose के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 alpha12 के साथ इंटिग्रेट करने के लिए अपडेट किया गया.
वर्शन 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,CombinedLoadStates.appendको अपडेट किया गया है, ताकि मीडिएटर और सोर्स लोड की स्थितियांNotLoadingहोने के बाद ही,Loadingसे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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LazyPagingItemमें.peek(),.snapshot(),.retry(), और.refresh()तरीके जोड़े गए हैं. ये तरीके,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को ऐक्सेस करने पर, अब IllegalStateException (I96707) नहीं दिखेगा
वर्शन 3.0.0
वर्शन 3.0.0
5 मई, 2021
androidx.paging:paging-*:3.0.0 रिलीज़ हो गया है. वर्शन 3.0.0 में ये बदलाव शामिल हैं.
3.0.0 वर्शन की मुख्य सुविधाएं
Paging 2.x.x के ज़्यादातर मौजूदा एपीआई को बंद कर दिया गया है. इनकी जगह, Paging 3 के नए एपीआई इस्तेमाल किए जा रहे हैं. इनमें ये सुधार किए गए हैं:
- Kotlin कोरूटीन और Flow के लिए बेहतरीन सहायता
- सदस्यता रद्द करने की सुविधा
- लोडिंग की स्थिति और गड़बड़ी के बिल्ट-इन सिग्नल
- फिर से कोशिश करें + रीफ़्रेश करने की सुविधा
- तीनों DataSource सबक्लास को एक यूनिफ़ाइड PagingSource क्लास में जोड़ दिया गया है
- पेज में पसंद के मुताबिक बदलाव करने की सुविधा. इसमें विज्ञापन को अलग करने वाला एलिमेंट जोड़ने के लिए, पहले से मौजूद सुविधा भी शामिल है
- लोड होने की स्थिति के हेडर और फ़ुटर
वर्शन 3.0.0-rc01
21 अप्रैल, 2021
androidx.paging:paging-*:3.0.0-rc01 रिलीज़ हो गया है. वर्शन 3.0.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें कभी-कभी पेजिंग, RecyclerView को no-op differ इवेंट भेजता था. इससे कुछ लिसनर पहले ही ट्रिगर हो जाते थे. (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)
- अलग-अलग PagedList बिल्डर (पुराने कंपैटबिलिटी पाथ) अब
.build()को कॉल किए जाने पर, मेन थ्रेड पर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 से मिले खाली पेजों की वजह से, Paging को
prefetchDistanceको पूरा करने के लिए फिर से फ़ेच करने से रोकने वाली गड़बड़ी को ठीक किया गया. इससे Paging “stuck” हो जाता था.
वर्शन 3.0.0-beta01
10 फ़रवरी, 2021
androidx.paging:paging-*:3.0.0-beta01 रिलीज़ हो गया है. वर्शन 3.0.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Rx2 और Rx3 रैपर अब उस एक्सपेरिमेंटल एनोटेशन को दिखाते हैं जिस पर वे निर्भर करते हैं. अगर paging-rxjava2 या paging-rxjava3 में Rx compat रैपर का इस्तेमाल किया जा रहा है, तो अब आपको
@OptIn(ExperimentalCoroutinesApi::class)(Ib1f9d) के साथ इस्तेमाल की जानकारी देनी होगी
गड़बड़ियां ठीक की गईं
- संगतता वाले पाथ के ज़रिए v2
DataSourceAPI का इस्तेमाल करते समय, कभी-कभी दिखने वालीIndexOutOfBoundsException: Inconsistency detectedसमस्या को ठीक किया गया - को कंपैटिबिलिटी पाथ के ज़रिए इस्तेमाल करने पर,
DataSourceको चालू करने के दौरान होने वालेisInvalidकॉल को अब मुख्य थ्रेड के बजाय, फ़ेच डिस्पैचर पर सही तरीके से लॉन्च किया जाता है. इस अपडेट से, Room केPagingSourceको लागू करते समय मुख्य थ्रेड पर डीबी ऐक्सेस करने की वजह से होने वालीIllegalStateExceptionकी समस्या ठीक हो जाती है.
वर्शन 3.0.0-alpha13
27 जनवरी, 2021
androidx.paging:paging-*:3.0.0-alpha13 रिलीज़ हो गया है. वर्शन 3.0.0-alpha13 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PagingSource.getRefreshKeyको लागू करना अब ज़रूरी है. यह अब एक ऐब्स्ट्रैक्ट फ़ंक्शन है, जिसे डिफ़ॉल्ट रूप से लागू नहीं किया जाता. माइग्रेट करने वाले उपयोगकर्ता, डिफ़ॉल्ट तौर पर लागू किए गए तरीके का इस्तेमाल जारी रख सकते हैं. इसमें सिर्फ़nullदिखता है. हालांकि,getRefreshKey()में ऐसा तरीका लागू होना चाहिए जो उपयोगकर्ता की मौजूदा स्क्रोल पोज़िशन के आधार पर कुंजी दिखाता हो. इससे Paging,PagingState.anchorPositionके ज़रिए व्यूपोर्ट के बीच में कॉन्टेंट लोड करना जारी रख सकता है. (I4339a)InvalidatingPagingSourceFactoryअब एक फ़ाइनल क्लास है (Ia3b0a)- SeparatorType पैरामीटर की मदद से, टर्मिनल सेपरेटर (हेडर / फ़ुटर) के व्यवहार को कॉन्फ़िगर करने की अनुमति दें. यह पैरामीटर ज़रूरी नहीं है. इसके दो विकल्प होते हैं:
FULLY_COMPLETE- मौजूदा व्यवहार; टर्मिनल सेपरेटर जोड़ने से पहले, PagingSource और RemoteMediator, दोनों के लिए endOfPaginationReached के मार्क होने का इंतज़ार करें. अगर RemoteMediator का इस्तेमाल नहीं किया जाता है, तो रिमोट loadState को अनदेखा कर दिया जाता है. यह मुख्य रूप से तब काम आता है, जब आपको सेक्शन सेपरेटर सिर्फ़ तब दिखाने हों, जब सेक्शन पूरी तरह से लोड हो जाए. इसमें रिमोट सोर्स, जैसे कि नेटवर्क से फ़ेच करना भी शामिल है.SOURCE_COMPLETE- सिर्फ़ PagingSource के endOfPaginationReached को मार्क करने का इंतज़ार करें. भले ही, RemoteMediator का इस्तेमाल किया जा रहा हो. इससे हेडर और फ़ुटर को शुरुआती लोड के साथ सिंक्रोनस तरीके से दिखाया जा सकता है. इससे लोगों को टर्मिनल सेपरेटर देखने के लिए स्क्रोल नहीं करना पड़ता. (Ibe993, b/174700218)
गड़बड़ियां ठीक की गईं
- मेमोरी लीक की एक ऐसी समस्या को ठीक किया गया है जो तब होती है, जब PageFetcher के डेटा लोड करने से पहले ही PagingSource अमान्य हो जाता है. (I9606b, b/174625633)
वर्शन 3.0.0-alpha12
13 जनवरी, 2021
androidx.paging:paging-*:3.0.0-alpha12 रिलीज़ हो गया है. वर्शन 3.0.0-alpha12 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- InvalidatingPagingSourceFactory अब ऐब्स्ट्रैक्ट क्लास नहीं है, क्योंकि इसमें कभी कोई ऐब्स्ट्रैक्ट मेथड नहीं थी. (I4a8c4)
- .cachedIn() का एक ओवरलोड जोड़ा गया है, जो Java उपयोगकर्ताओं के लिए लाइफ़साइकल या CoroutineScope के बजाय ViewModel को स्वीकार करता है. (I97d81, b/175332619)
- Java कॉलर को PagingData ट्रांसफ़ॉर्मेशन ऑपरेशन को एसिंक्रोनस तरीके से इस्तेमाल करने की अनुमति दें. इसके लिए, ट्रांसफ़ॉर्म ऑपरेटर आर्ग्युमेंट में Executor को स्वीकार करें. सभी -Sync ट्रांसफ़ॉर्म ऑपरेटर से -Sync सफ़िक्स को हटा दिया गया है. Kotlin Coroutine का इस्तेमाल करने वाले लोगों को एक्सटेंशन फ़ंक्शन को कॉल करके, साफ़ तौर पर बताना होगा कि उन्हें क्या करना है. यह फ़ंक्शन, सस्पेंडिंग ब्लॉक को स्वीकार करता है.
सभी PagingData ट्रांसफ़ॉर्मेशन ऑपरेटर को स्टैटिक PagingDataTransforms क्लास के तहत एक्सटेंशन में ले जाया गया है. 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अब एक ओपन फ़ंक्शन नहीं है. अगर आपको अमान्य होने पर सूचना चाहिए, तो invalidate को ओवरराइड करने के बजाय, registerInvalidatedCallback तरीके को कॉल करें. (I628d9, b/173029013, b/137971356)- पेजर में अब अपने सामान्य कंस्ट्रक्टर के साथ-साथ, एक्सपेरिमेंट के तौर पर उपलब्ध एक कंस्ट्रक्टर भी है. इसमें, ऑप्ट-इन एनोटेशन के ज़रिए, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई को एक्सपेरिमेंट के तौर पर उपलब्ध न होने वाले सार्वजनिक एपीआई में लीक नहीं किया जाता. (I9dc61, b/174531520)
- सुविधा से जुड़ी प्रॉपर्टी
CombinedLoadStates.refresh,CombinedLoadStates.prepend, औरCombinedLoadStates.appendको अपडेट किया गया, ताकि मीडिएटर और सोर्स, दोनों के लोड होने की स्थितिNotLoadingहोने के बाद ही,LoadingसेNotLoadingपर ट्रांज़िशन हो. इससे यह पक्का किया जा सकेगा कि रिमोट अपडेट लागू हो गया है. (I65619) LoadParams.pageSize को हटा दिया गया है. इसे पहले ही बंद कर दिया गया था. सुझाव यह है कि आप अपने PagingSource में
LoadParams.loadSizeका इस्तेमाल करें.LoadParams.loadSizeहमेशाPagingConfig.pageSizeके बराबर होता है. हालांकि, शुरुआती लोड कॉल के लिए यहPagingConfig.initialLoadSizeके बराबर होता है.अगर Pager या PagedList का इस्तेमाल किए बिना Paging2 DataSource की जांच की जा रही है, तो हो सकता है कि
pageSize,PagingConfig.pageSizeसे मैच न करे. ऐसा तब होता है, जबinitialLoadSizeको भी सेट किया जा रहा हो. अगर यह आपके टेस्ट के लिए ज़रूरी है, तो Pager/PagedList का इस्तेमाल करके देखें. इससे आपके DataSource लोड करने के तरीकों के लिए, PageSize की सही वैल्यू अपने-आप सेट हो जाएगी. (I98ac7, b/149157296)
गड़बड़ियां ठीक की गईं
- PagingConfig.maxSize सेट के साथ सेपरेटर का इस्तेमाल करने पर, IllegalStateException की वजह से होने वाले क्रैश को ठीक किया गया. (I0ed33, b/174787528)
- उस गड़बड़ी को ठीक किया गया है जिसमें RemoteMediator सेट होने पर, PREPEND / APPEND के लिए लोड की स्थिति, शुरुआती लोड के बाद
NotLoading(endOfPaginationReached = true)पर तुरंत अपडेट नहीं होती थी (I8cf5a) - उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, ListUpdateCallback अपडेट में .snapshot(), .peek() वगैरह जैसे प्रज़ेंटर-साइड एपीआई, पिछली (पुरानी) सूची दिखाते थे.
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, RemoteMediator के साथ इस्तेमाल किए जाने पर, सेपरेटर ऑपरेटर हेडर या फ़ुटर नहीं जोड़ते थे
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, RemoteMediator के लिए LoadState के NotLoading में अपडेट होने पर, वह Loading स्टेटस में अटक जाता था
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, Paging2.0 के साथ काम करने वाला एपीआई,
.asPagingSourceFactory(), गलत CoroutineDispatcher पर बैकिंगDataSourceको शुरू कर सकता था. इससे क्रैश और एएनआर की संभावित समस्याओं को ठीक किया जा सकता है. खास तौर पर, तब जब Room के 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)
बाहरी योगदान
- एक नई ऐब्स्ट्रैक्ट क्लास InvalidatingPagingSourceFactory को
.invalidate()एपीआई के साथ जोड़ा गया है. यह एपीआई, उन सभी PagingSources को अमान्य कर देता है जिन्हें यह जनरेट करता है. @claraf3 को धन्यवाद! (Ie71fc, b/160716447)
पहले से मालूम समस्याएं
- RemoteMediator b/172254056 का इस्तेमाल करने पर, हो सकता है कि .insertSeparators() ट्रांसफ़ॉर्म के हेडर और फ़ुटर तुरंत न दिखें
- RemoteMediator का इस्तेमाल करने से, रिमोट
LoadStateअटक सकता है. ऐसा तब होता है, जबRemoteMediator.load()के b/173717820 को वापस करने से पहले, अमान्य करने की प्रोसेस औरPagingSource.load(LoadParams.Refresh(...))पूरा हो जाता है
वर्शन 3.0.0-alpha09
11 नवंबर, 2020
androidx.paging:paging-*:3.0.0-alpha09 रिलीज़ हो गया है. वर्शन 3.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- dataRefreshFlow / Listener के तरीकों को पूरी तरह से बंद कर दिया गया है. इनकी जगह, replaceWith क्लॉज़ का इस्तेमाल करें. (I6e2dd)
गड़बड़ियां ठीक की गईं
- RemoteMediator के साथ सेपरेटर इस्तेमाल करते समय,
IllegalArgumentExceptionके थ्रो होने की समस्या को ठीक किया गया है. साथ ही, ऐसे समय में अमान्य होने की समस्या को ठीक किया गया है, जब endOfPagination दिखाने वाला रिमोट लोड अब भी चल रहा है (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 में उपलब्ध फ़ंक्शनल इंटरफ़ेस का इस्तेमाल किया गया है. इससे उस गड़बड़ी को भी ठीक किया गया है जिसमें.mapया.mapByPageसे बदलने के बाद, अमान्य किए गए कॉलबैक के Kotlin वर्शन को कॉल नहीं किया गया था. (I1f244, b/165313046)
गड़बड़ियां ठीक की गईं
- ViewPager के साथ Paging के इंटरैक्शन को काफ़ी बेहतर बनाया गया है. खास तौर पर, पेज अमान्य होने की वजह से, पेजिंग अब
RemoteMediator#loadकॉल को रद्द नहीं करेगी. साथ ही, यह तब तक डेटा को अपेंड/प्रीपेंड करने का अनुरोध नहीं करेगा, जब तक कि रीफ़्रेश करने का अनुरोध पूरा नहीं हो जाता. ऐसा तब होगा, जब रीफ़्रेश करना ज़रूरी हो. (I6390b, b/162252536) - MissingGetterMatchingBuilder के लिए एपीआई लिंट चेक, androidx के लिए चालू है (I4bbea, b/138602561)
- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, बैकग्राउंड थ्रेड से RecyclerView को सूचना देने पर,
.withLoadState*ConcatAdapterहेल्पर क्रैश हो जाते थे (I18bb5, b/170988309) - एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, खाली न होने वाले बहुत छोटे पेज को लोड करने पर, कभी-कभी प्रीफ़ेच की सुविधा, लोड को सही तरीके से ट्रिगर नहीं कर पाती थी.Iffda3 b/169259468
वर्शन 3.0.0-alpha07
1 अक्टूबर, 2020
androidx.paging:paging-*:3.0.0-alpha07 रिलीज़ हो गया है. वर्शन 3.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Guava पर आधारित Async PagingData ऑपरेटर अब एक्ज़ीक्यूशन कॉन्टेक्स्ट को कंट्रोल करने के लिए, Executor को पैरामीटर के तौर पर स्वीकार करते हैं. (Id4372)
गड़बड़ियां ठीक की गईं
- रेस कंडीशन की वजह से, RemoteMediator में IndexOutOfBounds अपवाद ठीक किया गया. (I00b7f, b/165821814)
- DataSource -> PagingSource कन्वर्ज़न में रेस कंडिशन को ठीक किया गया. इसकी वजह से, PagingSource, DataSource से मिलने वाले अमान्य सिग्नल को अनदेखा कर सकता था.
- पेज फ़ेच करने के लॉजिक में आने वाली समस्या को ठीक किया गया है. इसकी वजह से, कभी-कभी PagingSource की नई जनरेशन को तब तक फ़ेच नहीं किया जा पाता था, जब तक PagingDataAdapter.refresh() को कॉल नहीं किया जाता था
- उस समस्या को ठीक किया गया है जिसकी वजह से, RemoteMediator के साथ PagingSource में बदले गए DataSource (जैसे कि Room से बनाया गया) का इस्तेमाल करते समय, कभी-कभी स्क्रोल-पोज़िशन गायब हो जाती थी
बाहरी योगदान
- PagingData के लिए RxJava2, RxJava3, और Guava पर आधारित एसिंक्रोनस ट्रांसफ़ॉर्मेशन ऑपरेटर जोड़ने के लिए, @simonschiller को धन्यवाद!
वर्शन 3.0.0-alpha06
2 सितंबर, 2020
androidx.paging:paging-*:3.0.0-alpha06 रिलीज़ हो गया है. वर्शन 3.0.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब जब भी
PagingDataAdapter.setHasStableIdsको कॉल किया जाता है, तबUnsupportedOperationExceptionको साफ़ तौर पर मैसेज के साथ थ्रो किया जाता है. इसमें बताया जाता है कि स्टेबल आईडी के लिए सहायता उपलब्ध नहीं है. (Ib3890, b/158801427)
गड़बड़ियां ठीक की गईं
- insertSeparators अब खाली पेजों को फ़िल्टर नहीं करता. इससे प्रज़ेंटर, प्रीफ़ेच डिस्टेंस का पालन कर पाता है. भले ही, कई खाली पेज डाले गए हों. (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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AsyncPagingDataDifferमेंpeek()एपीआई औरPagingDataAdapterको जोड़ा गया, ताकि ट्रिगर पेज लोड किए बिना, दिखाए गए डेटा को ऐक्सेस किया जा सके. (I38898, b/159104197)PagingDataAdapterऔरAsyncPagingDataDifferमेंsnapshot()API जोड़ा गया है, ताकि पेज फ़ेच को ट्रिगर किए बिना दिखाए गए आइटम वापस पाए जा सकें. (I566b6, b/159104197)- स्टैटिक सूचियां दिखाने के लिए,
PagingData.from(List<T>)कंस्ट्रक्टर जोड़ा गया.इसे PagingData के पूरे फ़्लो के साथ जोड़ा जा सकता है, ताकि कुछ स्थितियों में स्टैटिक सूचियां दिखाई जा सकें. उदाहरण के लिए, शुरुआती REFRESH खत्म होने से पहले या सिर्फ़ ट्रांसफ़ॉर्मेशन की जांच करने के लिए. (Id134d) - dataRefresh Flow / Listener एपीआई को बंद कर दिया गया है, क्योंकि इनका मकसद REFRESH पर दिखाए गए आइटम की स्थिति को दिखाना था. हालांकि, loadState Flow / Listener कॉलबैक टाइमिंग और itemCount प्रॉपर्टी में सुधार होने की वजह से, अब इनकी ज़रूरत नहीं है (Ia19f3)
PagingSourceऔरRemoteMediatorके लिए, RxJava3 के साथ काम करने वाले रैपर जोड़े गए (I49ef3, b/161480176)
गड़बड़ियां ठीक की गईं
PositionalDataSourceकोPagingSourceमें बदला गया. इसके लिए,toPagingSourceFactoryहेल्पर का इस्तेमाल किया गया. इसमें Room से जनरेट किया गयाPagingSourceभी शामिल है. अब ये जंपिंग की सुविधा के साथ काम करने के लिए, खुद को सही तरीके से मार्क करते हैं. (I3e84c, b/162161201)- उस गड़बड़ी को ठीक किया गया है जिसमें submitData के सिंक्रोनस वैरिएंट का इस्तेमाल करने पर, कभी-कभी रेस की वजह से
ClosedSendChannelException(I4d702, b/160192222) हो जाता था
बाहरी योगदान
- Slack की ओर से, RxJava3 के साथ काम करने वाले रैपर जोड़ने के लिए Zac Sweers को धन्यवाद! (I49ef3, b/161480176)
वर्शन 3.0.0-alpha03
22 जुलाई, 2020
androidx.paging:paging-*:3.0.0-alpha03 रिलीज़ हो गया है. वर्शन 3.0.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- PagingState के लिए कंस्ट्रक्टर अब सार्वजनिक है. इससे getRefreshKey() के टेस्टिंग इंप्लिमेंटेशन को आसान बनाया जा सकेगा (I8bf15)
- DataSource kotlin मैप फ़ंक्शन के वैरिएंट को Java से छिपाया गया, ताकि ओरिजनल और kotlin वैरिएंट के बीच के अंतर को हल किया जा सके. (If7b23, b/161150011)
- Kotlin का इस्तेमाल करने वाले लोगों की सुविधा के लिए बनाए गए ग़ैर-ज़रूरी एपीआई को @JvmSynthetic के तौर पर मार्क किया गया है (I56ae5)
- LoadResult.Page के कंस्ट्रक्टर के लिए ओवरलोड जोड़े गए हैं. इनमें itemsBefore और itemsAfter की वैल्यू डिफ़ॉल्ट रूप से COUNT_UNDEFINED (I47849) पर सेट होती है
- मौजूदा PagingData ऑपरेटर को सस्पेंड करने वाले तरीकों को स्वीकार करने के लिए बनाया गया है. साथ ही, Java उपयोगकर्ताओं के लिए नए mapSync, flatMapSync, और filterSync नॉन-सस्पेंडिंग ऑपरेटर पेश किए गए हैं. ट्रांसफ़ॉर्मेशन के मौजूदा तरीकों को एक्सटेंशन फ़ंक्शन में बदल दिया गया है. इसलिए, Kotlin का इस्तेमाल करने वाले लोगों को अब उन्हें इंपोर्ट करना होगा. (I34239, b/159983232)
गड़बड़ियां ठीक की गईं
- Room (और PositionalDataSource) PagingSources अब पहले पेज के हिस्से के तौर पर लीडिंग सेपरेटर दिखाएंगे, ताकि उपयोगकर्ता को इसे देखने के लिए स्क्रोल न करना पड़े. (I6f747, b/160257628)
- अब प्लेसहोल्डर पर आइटम ऐक्सेस करने से, PagingSource लोड सही तरीके से ट्रिगर होते हैं. ऐसा तब तक होता है, जब तक कि PagingData.filter() से बदले जाने के बाद, अनुरोध किए गए इंडेक्स को पूरा करने वाला पेज वापस नहीं आ जाता (I95625, b/158763195)
- उस बग को ठीक किया गया है जिसमें कभी-कभी PagingSource के बाद स्क्रोल करने पर गड़बड़ी होती थी. इससे PagingDataAdapter.retry() को फिर से कोशिश करने से रोका जा सकता था. (I1084f, b/160194384)
- उस समस्या को ठीक किया गया है जिसमें किसी पेज को छोड़ने के बाद आइटम ऐक्सेस करने पर, पेज लोड नहीं हो पाते थे. भले ही, आइटम ऐक्सेस prefetchDistance के अंदर हो (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) शामिल हैं- अडैप्टर एपीआई,
dataRefreshFlowऔरdataRefreshListenerअब बूलियन वैल्यू पास करते हैं, ताकि यह पता चल सके किPagingDataखाली है या नहीं (I6e37e, b/159054196) - RemoteMediator के लिए RxJava और Guava एपीआई जोड़े गए - RxRemoteMediator और ListenableFutureRemoteMediator
- कॉमन आइटम ऐक्सेस करने के लिए, PagingState में हेल्पर जोड़े गए हैं. जैसे,
isEmpty()औरfirstItemOrNull()(I3b5b6, b/158892717)
गड़बड़ियां ठीक की गईं
- अब Pager, फ़ैक्ट्री में PagingSource के फिर से इस्तेमाल होने की जांच करता है. इससे अमान्य PagingSource को गलती से फिर से इस्तेमाल होने से रोका जा सकेगा. इससे I99809, b/158486430 जैसी गड़बड़ी होती थी
- RemoteMediator REFRESH में गड़बड़ियां होने पर, PagingSource को लोड होने से नहीं रोका जाता (I38b1b, b/158892717)
submitDataके निलंबन से जुड़े वर्शन के बाद कॉल किए जाने पर,submitDataके निलंबन से जुड़े वर्शन की वजह से अब क्रैश नहीं होता. ऐसा इसलिए, क्योंकि कईPagingDataपर एक साथ कलेक्शन किया जाता है. (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 कोरूटीन और Flow के लिए बेहतरीन सहायता.
- coroutines suspend functions, RxJava Single या Guava ListenableFuture primitives के साथ एसिंक्रोनस लोडिंग की सुविधा.
- रिस्पॉन्सिव यूज़र इंटरफ़ेस (यूआई) डिज़ाइन के लिए, पहले से मौजूद लोड स्टेट और गड़बड़ी के सिग्नल. इनमें फिर से कोशिश करने और रीफ़्रेश करने की सुविधा भी शामिल है.
- रिपॉज़िटरी लेयर में किए गए सुधार
- डेटा सोर्स का आसान इंटरफ़ेस
- नेटवर्क और डेटाबेस के लिए पेजेशन को आसान बनाना
- सदस्यता रद्द करने से जुड़ी सहायता
- प्रज़ेंटेशन लेयर में किए गए सुधार
आम समस्याएं
- Paging 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, गलत तरीके से कॉन्फ़िगर की गई ब्रांच से रिलीज़ किया गया था. इससे, आंशिक रूप से लागू किए गए एपीआई और आने वाले समय में रिलीज़ होने वाली सुविधाएं सार्वजनिक हो गईं.Paging
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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- प्लेसहोल्डर बंद होने पर, PositionalDataSources से लगातार होने वाले शुरुआती लोड, अब पिछली बार ऐक्सेस किए गए डेटा के आस-पास ही होते हैं
वर्शन 2.1.0
वर्शन 2.1.0
25 जनवरी, 2019
Paging 2.1.0 को 2.1.0-rc01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 2.1.0-rc01
6 दिसंबर, 2018
Paging 2.1.0-rc01 को 2.1.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 2.1.0-beta01
1 नवंबर 2018
Paging 2.1.0-beta01 को 2.1.0-alpha01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 2.1.0-alpha01
12 अक्टूबर, 2018
Paging 2.1.0-alpha01 में दो मुख्य बदलाव किए गए हैं. पहला, पेज ड्रॉप करने की सुविधा जोड़ी गई है. दूसरा, हर आर्टफ़ैक्ट के लिए KTX एक्सटेंशन लाइब्रेरी जोड़ी गई है. इसके अलावा, एपीआई में कई अन्य बदलाव किए गए हैं और बग ठीक किए गए हैं.
एपीआई में हुए बदलाव
- मेमोरी में लोड किए गए आइटम की संख्या को सीमित करने के लिए,
PagedList.Config.Builder.setMaxSize()को जोड़ा गया. PagedList.Config.Builderके लिए, Kotlin के विकल्प के तौर परandroidx.paging.Config()को जोड़ा गयाPagedList.Builderके लिए, Kotlin के विकल्प के तौर परandroidx.paging.PagedList()को जोड़ा गयाDataSourceFactory.toLiveData()कोLivePagedListBuilderके लिए Kotlin के विकल्प के तौर पर जोड़ा गयाRxPagedListBuilderके लिए, Kotlin के विकल्पों के तौर परDataSourceFactory.toObservable()औरtoFlowable()को जोड़ा गया- PagedList के स्वैप होने पर सुनने के लिए,
AsyncPagedListDiffer.addPagedListListener()को जोड़ा गया. b/111698609 PagedListAdapter.onCurrentListChanged()वैरिएंट जोड़ा गया, जो पुरानी और नई सूची को पास करता है. साथ ही, पिछले वैरिएंट को बंद कर दिया गया है.PagedListAdapter/AsyncPagedListDiffer.submitList()वैरिएंट जोड़े गए हैं. ये वैरिएंट एक अतिरिक्त कॉलबैक लेते हैं. यह कॉलबैक, डिफ़िंग के बाद, पेज की सूची दिखने पर ट्रिगर होता है. इससे, PagedList स्वैप को अन्य यूज़र इंटरफ़ेस (यूआई) अपडेट के साथ सिंक किया जा सकता है. b/73781068PagedList.getLoadedCount()को इसलिए जोड़ा गया है, ताकि आपको पता चल सके कि मेमोरी में कितने आइटम हैं. ध्यान दें कि अगर प्लेसहोल्डर बंद हैं, तो रिटर्न वैल्यू हमेशा.size()के बराबर होती है.
गड़बड़ियां ठीक की गईं
- सूचियों का फिर से इस्तेमाल किए जाने पर, अंतर की तुलना करते समय होने वाली रेस कंडिशन को ठीक किया गया b/111591017
PagedList.loadAround()अब इंडेक्स अमान्य होने परIndexOutOfBoundsExceptionदिखाता है. पहले, यह किसी अन्य अपवाद की वजह से क्रैश हो सकता था.- उस समस्या को ठीक किया गया है जिसमें शुरुआती लोड का साइज़ बहुत छोटा होने और डेटा में कोई बदलाव न होने पर, आगे कोई डेटा लोड नहीं होता था b/113122599
वर्शन 2.0.0
वर्शन 2.0.0
1 अक्टूबर, 2018
Paging 2.0.0 को एक गड़बड़ी ठीक करके रिलीज़ किया गया है.
गड़बड़ियां ठीक की गईं
PositionalDataSourceऔर प्लेसहोल्डर b/114635383 का इस्तेमाल करके, बहुत तेज़ी से स्क्रोल करने पर होने वाली क्रैश की समस्या को ठीक किया गया.
वर्शन 2.0.0-beta01
2 जुलाई, 2018
गड़बड़ियां ठीक की गईं
- कुछ मामलों में, पहले से मौजूद कॉन्टेंट के ऊपर कॉन्टेंट जोड़ने पर, कॉन्टेंट के गायब होने की समस्या ठीक की गई (प्लेसहोल्डर बंद हैं, PositionalDataSource) b/80149146
- (
1.0.1में पहले ही रिलीज़ किया जा चुका है) क्रैश होने की उन समस्याओं को ठीक किया गया है जिनकी वजह सेPagedListAdapterऔरAsyncPagedListDiffer, मूव इवेंट को सिग्नल नहीं भेज पाते थे. b/110711937
AndroidX से पहले की डिपेंडेंसी
AndroidX से पहले के Paging के वर्शन के लिए, ये डिपेंडेंसी शामिल करें:
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 का इस्तेमाल करें, ताकि आपको बेहतर अनुभव मिल सके. Paging RxJava2 1.0.1 भी रिलीज़ हो गया है. यह 1.0.0-rc1 जैसा ही है.
गड़बड़ियां ठीक की गईं
- क्रैश होने की उन समस्याओं को ठीक किया गया है जिनकी वजह से
PagedListAdapterऔरAsyncPagedListDiffer, मूव इवेंट को सिग्नल नहीं भेज पाते थे. b/110711937
RxJava2 वर्शन 1.0.0
RxJava2 वर्शन 1.0.0-rc1
16 मई, 2018
Paging 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, Arch Components IO थ्रेड पूल के बजाय, तय किए गए एक्ज़ीक्यूटर पर शुरुआतीPagedListलोड को ट्रिगर करता है.इंटरनल
DataSourceरैपर में अमान्य व्यवहार को ठीक किया गया. इनका इस्तेमाल,DataSource.mapऔर प्लेसहोल्डर के बिनाPositionalDataSourceलोड करने के लिए किया जाता है b/77237534
वर्शन 1.0.0-alpha7
21 मार्च, 2018
Paging 1.0.0-alpha7 को Lifecycles 1.1.1 के साथ रिलीज़ किया गया है. Paging alpha7, ऊपर बताई गई Function क्लास के मूव पर निर्भर करता है. इसलिए, आपको अपनी lifecycle:runtime डिपेंडेंसी को android.arch.lifecycle:runtime:1.1.1 पर अपडेट करना होगा.
Paging alpha7, Paging के बीटा वर्शन के रिलीज़ होने से पहले की आखिरी रिलीज़ होगी.
एपीआई में हुए बदलाव
DataSource.LoadParamsऑब्जेक्ट में अब एक सार्वजनिक कंस्ट्रक्टर है औरDataSource.LoadCallbackऑब्जेक्ट अब ऐब्स्ट्रैक्ट हैं. इससेDataSourceको रैप किया जा सकता है या मॉक कॉलबैक के साथ सीधे तौर परDataSourceकी जांच की जा सकती है. b/72600421- DataSource और DataSource.Factory के लिए मैपर
map(Function<IN,OUT>)की मदद से,DataSourceसे लोड किए गए नतीजों को बदला, रैप किया या सजाया जा सकता है.mapByPage(<List<IN>,List<OUT>>)बैच प्रोसेसिंग के लिए भी ऐसा ही करता है. उदाहरण के लिए, अगर SQL से लोड किए गए आइटम को किसी अन्य डेटाबेस से क्वेरी करने की ज़रूरत है, तो इसे बैच के तौर पर किया जा सकता है.
PagedList#getDataSource()को सुविधा के तौर पर जोड़ा गया है b/72611341- एपीआई से बंद की गई सभी क्लास हटा दी गई हैं. इनमें
recyclerview.extensionsपैकेज औरLivePagedListProviderके बचे हुए हिस्से भी शामिल हैं. - मैप की सुविधा चालू करने के लिए,
DataSource.Factoryको इंटरफ़ेस से ऐब्स्ट्रैक्ट क्लास में बदल दिया गया है.
गड़बड़ियां ठीक की गईं
- बिल्डर को फ़ाइनल के तौर पर सेट किया गया. b/70848565
- मल्टी-टेबल क्वेरी को मैनेज करने के लिए, Room
DataSourceको लागू करने की सुविधा को अब ठीक कर दिया गया है. यह सुधार Room 1.1.0-beta1 में शामिल है. ऊपर देखें. - हमने उस गड़बड़ी को ठीक कर दिया है जिसकी वजह से, प्लेसहोल्डर चालू होने और कुल साइज़, पेज के साइज़ का सटीक मल्टीपल होने पर,
PositionalDataSourceके लिएBoundaryCallback.onItemAtEndLoadedको शुरू नहीं किया जाता था.
वर्शन 1.0.0-alpha5
22 जनवरी, 2018
गड़बड़ियां ठीक की गईं
- प्लेसहोल्डर बंद होने पर, पेज लोड होने की समस्या को ठीक करना b/70573345
- IllegalArgumentException गड़बड़ी b/70360195 का पता लगाने के लिए अतिरिक्त लॉगिंग (और रूम-साइड फ़िक्स का अनुमान)
- Javadoc के सैंपल कोड से जुड़ी गड़बड़ियां ठीक की गईं b/70411933, b/71467637