पृष्ठांकन
इस टेबल में, androidx.paging ग्रुप में मौजूद सभी आर्टफ़ैक्ट की सूची दी गई है.
| सह-प्रॉडक्ट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| paging-* | 3.5.1 | - | - | - |
| paging-compose | 3.5.1 | - | - | - |
डिपेंडेंसी का एलान करना
Paging पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { def paging_version = "3.5.1" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Android dependencies for tests testImplementation "androidx.paging:paging-common:$paging_version" // optional - RxJava2 support implementation "androidx.paging:paging-rxjava2:$paging_version" // optional - RxJava3 support implementation "androidx.paging:paging-rxjava3:$paging_version" // optional - Guava ListenableFuture support implementation "androidx.paging:paging-guava:$paging_version" // optional - Jetpack Compose integration implementation "androidx.paging:paging-compose:3.5.1" }
Kotlin
dependencies { val paging_version = "3.5.1" implementation("androidx.paging:paging-runtime:$paging_version") // alternatively - without Android dependencies for tests testImplementation("androidx.paging:paging-common:$paging_version") // optional - RxJava2 support implementation("androidx.paging:paging-rxjava2:$paging_version") // optional - RxJava3 support implementation("androidx.paging:paging-rxjava3:$paging_version") // optional - Guava ListenableFuture support implementation("androidx.paging:paging-guava:$paging_version") // optional - Jetpack Compose integration implementation("androidx.paging:paging-compose:3.5.1") }
Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 3.5
वर्शन 3.5.1
12 अगस्त, 2026
androidx.paging:paging-*:3.5.1 रिलीज़ हो गया है. वर्शन 3.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पेज को रीफ़्रेश करते समय, प्लेसहोल्डर में स्क्रोल करते समय सेपरेटर वाले पेज पर बहुत बड़ा
PagingSource.getRefreshKeyगलतanchorPositionदेने की समस्या को ठीक किया गया. (I475f0, b/516565503)
वर्शन 3.5.0
6 मई, 2026
androidx.paging:paging-*:3.5.0 रिलीज़ हो गया है. वर्शन 3.5.0 में ये बदलाव शामिल हैं.
वर्शन 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>.asStateAPI का नाम बदलकर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के साथ इस्तेमाल करने पर, स्क्रोल करने के अलावा ज़्यादा डेटा लोड करने का विकल्प मिलता है- नए
asStateAPI के साथ इस्तेमाल करने पर, ज़्यादा डेटा लोड करने का यही एक तरीका है
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 और डेस्कटॉप), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW), और Web (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)
गड़बड़ियां ठीक की गईं
- Android यूनिट टेस्ट में Paging 3.3 या इसके बाद के वर्शन का इस्तेमाल करने पर, अब
PagingLogger(Ia9400, b/331684448) से कोई गड़बड़ी नहीं दिखेगी - उस गड़बड़ी को ठीक किया गया है जिसमें उपयोगकर्ता के स्क्रोल करने के दौरान
RecyclerViewको अपडेट करते समय,RecyclerViewIndexOutOfBoundsExceptionथ्रो करता है (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कोPagingDataAdapterमें सबमिट करने पर,LoadStatesको डिसपैच नहीं किया जाता है. इसके अलावा,LazyPagingItemsके तौर पर इकट्ठा किए जाने पर, लोडिंग की स्थितियां डिसपैच की जाती हैं.LazyPagingItemsके तौर पर इकट्ठा किए जाने पर, अब यह शुरुआती कंपोज़िशन पर तुरंत एक खाली सूची भी दिखाएगा.
Kotlin Multiplatform के साथ काम करने की सुविधा
Paging अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट उपलब्ध कराता है. ऐसा CashApp के multiplatform-paging प्रोजेक्ट की वजह से हुआ है.
paging-commonने सभी Paging 3 API कोcommonपर ट्रांसफ़र कर दिया है. अब यह Android के साथ-साथ jvm और iOS के साथ भी काम करता है.paging-testingने अपना कोडcommonपर ट्रांसफ़र कर दिया है. अब यह Android के साथ-साथ jvm और iOS के साथ भी काम करता है.paging-composeने अपना कोडcommonपर ट्रांसफ़र कर दिया है. साथ ही, यहandroidx.composeकी मल्टीप्लैटफ़ॉर्म सुविधा के साथ काम करने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है.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 Annotation
@MainThreadएनोटेशन का इस्तेमाल करता है. (I78f0d, b/327682438)
वर्शन 3.3.0-alpha04
6 मार्च, 2024
androidx.paging:paging-*:3.3.0-alpha04 रिलीज़ हो गया है. वर्शन 3.3.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Kotlin Multiplatform के साथ काम करने की सुविधा जोड़ने से जुड़ी दस्तावेज़ की मामूली गड़बड़ियों को ठीक किया गया है. (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, गड़बड़ी वाली याNotLoadingस्थिति में है या नहीं. इसके अलावा, एक नया एपीआई भी जोड़ा गया है. यहLoadStateFlowस्थिति में तब तक रहता है, जब तक लोडNotLoadingया गड़बड़ी की स्थिति में नहीं पहुंच जाता. (Id6c67)
व्यवहार में बदलाव
PagingData.empty()अब डिफ़ॉल्ट रूप सेNotLoadingकी स्थितियां भेजता है. हालांकि, ऐसा तब तक होता है, जब तक कि कस्टमLoadStatesको इसके कंस्ट्रक्टर में पास न किया जाए. यह मौजूदा व्यवहार से अलग है. इसमेंPagingDataAdapterको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 API कोcommonपर ट्रांसफ़र कर दिया है. अब यह Android के साथ-साथ jvm और iOS के साथ भी काम करता है.paging-testingने अपना कोडcommonपर ट्रांसफ़र कर दिया है. अब यह Android के साथ-साथ jvm और iOS के साथ भी काम करता है.paging-composeने अपना कोडcommonपर ट्रांसफ़र कर दिया है. साथ ही, यहandroidx.composeकी मल्टीप्लैटफ़ॉर्म सुविधा के साथ काम करने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है.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)का इस्तेमाल करके बनाए गए फ़्लो को पास करने पर, पेजिंग टेस्टिंग आर्टफ़ैक्ट काasSnapshot()एपीआई हैंग हो जाता था. ऐसा इसलिए होता था, क्योंकिasSnapshot()के पास यह जानकारी नहीं होती थी कि लोडिंग कब पूरी हुई (PagingData.from(List, LoadStates)ओवरलोड के उलट). यह तरीका सिर्फ़ उन फ़्लो के लिए काम करता है जिन्हें पूरा किया जा सकता है. जैसे,flowOf(PagingData.from(...)). जिन फ़्लो को पूरा नहीं किया जा सकता उनके लिए,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)बनाकर और उसPagingDataकोMutableStateFlow(जैसे,MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) में रैप करके, नकली डेटा की सूची की झलक देखने की सुविधा. इस फ़्लो को@Previewकंपोज़ेबल मेंcollectAsLazyPagingItems()के लिए रिसीवर के तौर पर पास करें, ताकि झलक देखी जा सके.LazyVerticalGridऔरHorizontalPagerजैसे सभी लेज़ी लेआउट के साथ-साथ, Wear और TV लाइब्रेरी के कस्टम लेज़ी कॉम्पोनेंट के लिए सहायता. यह नए लोअर लेवलLazyPagingItemsएक्सटेंशन के तरीकोंitemKeyऔरitemContentTypeकी मदद से किया गया है. इससे आपको स्टैंडर्डitemsएपीआई मेंkeyऔरcontentTypeपैरामीटर लागू करने में मदद मिलती है. ये एपीआई,LazyColumnऔरLazyVerticalGridके साथ-साथHorizontalPagerजैसे एपीआई में इनके बराबर के पैरामीटर के लिए पहले से मौजूद हैं.items(lazyPagingItems)औरitemsIndexed(lazyPagingItems)को बंद कर दिया गया है. ये सिर्फ़LazyListScopeके साथ काम करते थे.
- नया
paging-testingआर्टफ़ैक्ट, जो आपके ऐप्लिकेशन की हर लेयर की यूनिट टेस्टिंग और Paging के साथ उसके इंटिग्रेशन के लिए डिज़ाइन किए गए एपीआई उपलब्ध कराता है. उदाहरण के लिए, इसमें ये शामिल हैंTestPagerक्लास है. इसकी मदद से, Pager और असली यूज़र इंटरफ़ेस (यूआई) से अलग, अपने कस्टमPagingSourceके व्यवहार की पुष्टि की जा सकती है.-
asPagingSourceFactoryएपीआई, जो किसीFlow<List<Value>>या स्टैटिकList<Value>कोPagingSourceFactoryमें बदल सकते हैं. इसPagingSourceFactoryको टेस्ट में Pager को पास किया जा सकता है asSnapshotFlow<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लैम्ब्डा की तुलना में, ज़्यादा साफ़ तौर पर एपीआई सरफेस उपलब्ध कराता है. इस फ़ैक्ट्री का इस्तेमाल, Pager को इंस्टैंशिएट करने के लिए किया जा सकता है.
वर्शन 3.2.0-rc01
21 जून, 2023
androidx.paging:paging-*:3.2.0-rc01 रिलीज़ हो गया है. वर्शन 3.2.0-rc01 में ये बदलाव शामिल हैं.
बाहरी योगदान
- Android/JVM की खास बातों से पेजिंग को हटाने में योगदान देने के लिए, Veyndan का धन्यवाद. (#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) PagingSourceFactoryपाने के लिए,paging-testingका नयाList<Value>.asPagingSourceFactory()जोड़ा गया है. यह सिर्फ़ डेटा की ऐसी सूची से लोड होता है जिसे बदला नहीं जा सकता.Flow<List<Value>>पर मौजूद मौजूदा एक्सटेंशन का इस्तेमाल, अब भी स्टैटिक डेटा के कई जनरेशन के साथ टेस्टिंग के लिए किया जाना चाहिए. (Id34d1, b/280655188)
एपीआई में हुए बदलाव
- पेजिंग-टेस्टिंग में मौजूद सभी सार्वजनिक एपीआई को अब
@VisibleForTestingके साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि इन एपीआई का इस्तेमाल सिर्फ़ टेस्ट में किया जाए. (I7db6e) asSnapshotएपीआई को अब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)
बाहरी योगदान
- Android/JVM की खास बातों से पेजिंग को हटाने में योगदान देने के लिए, Veyndan का धन्यवाद. (#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तरीका शामिल है. इससे, Pager को सप्लाई किए जाने वालेFlow<List<Value>>सेpagingSourceFactoryबनाया जा सकता है. Flow से निकलने वाला हरList<Value>>, पेज किए गए डेटा के जनरेशन को दिखाता है. इससे पेजिंग टेस्ट को आसान बनाया जा सकता है. उदाहरण के लिए, Pager के लिए डेटा सोर्स को फ़र्ज़ी बनाकर,PagingDataट्रांसफ़ॉर्मेशन. (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 क्लास शामिल है. इसकी मदद से, Pager और असली यूज़र इंटरफ़ेस (यूआई) से अलग, अपने कस्टम PagingSource के व्यवहार की पुष्टि की जा सकती है. आम तौर पर, आपको एंड-टू-एंड पेजिंग इंटिग्रेशन को सिम्युलेट करने के लिए इसकी ज़रूरत होती है.
TestPager को फ़ेक माना जाना चाहिए. यह टेस्ट डबल है, जो Pager के असली वर्शन की तरह काम करता है. साथ ही, PagingSource की जांच करने के लिए, आसान एपीआई उपलब्ध कराता है. ये suspend एपीआई हैं और इन्हें runTest में चलाना चाहिए. इसके लिए, Android पर Kotlin को-रूटीन की टेस्टिंग से जुड़ी गाइड में बताया गया तरीका अपनाएं.
इन एपीआई के इस्तेमाल का उदाहरण, room-paging टेस्ट में देखा जा सकता है. इन्हें TestPager का इस्तेमाल करने के लिए फिर से बनाया गया था.
एपीआई में हुए बदलाव
- इस कुकी की मदद से,
LoadResult.Page.dataसेLoadResult.Page.iterator()तक आसानी से दोहराया जा सकता है. इससे,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में शून्य से अलग वैल्यू सेट की गई है वहां अबPagingSource.getRefreshKey()के नतीजे कोinitialKeyके नतीजे से ज़्यादा प्राथमिकता दी जाएगी. (Ic9542, b/230391606)
बाहरी योगदान
- Updated :compose:ui:ui-test api (updateApi) due to test-coroutines-lib migration (I3366d)
वर्शन 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की कीमत,LoadType.REFRESHके लिए हमेशाfalseरहेगी. यह कीमत,PagingSourceऔरRemoteMediatorदोनों के लिए लागू होगी- पेजिंग से मिले
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अब हमेशाfalseहोता हैLoadType.REFRESH. पहले, RemoteMediatorREFRESHके लिए endOfPaginationReached कोtrueके तौर पर सेट किया जा सकता था. हालांकि, PagingSource के लिए ऐसा नहीं किया जा सकता था. इस व्यवहार को अब हमेशाfalseके तौर पर दिखाया जाता है, क्योंकि REFRESH को कभी भी टर्मिनल के तौर पर नहीं दिखाया जा सकता. साथ ही, अब इसे LoadStates में एपीआई कॉन्ट्रैक्ट के हिस्से के तौर पर दस्तावेज़ में शामिल किया गया है. पेज नंबर डालने की सुविधा बंद करने का फ़ैसला लेते समय, आपको हमेशा APPEND या PREPEND के हिसाब से फ़ैसला लेना चाहिए. (I047b6) पेजिंग की LoadStates अब PagingSource और RemoteMediator, दोनों से मान्य वैल्यू मिलने का इंतज़ार करती हैं. इसके बाद, जनरेशन के बीच डाउनस्ट्रीम में वैल्यू भेजती हैं. इससे PagingData की नई जनरेशन, CombinedLoadStates.source.refresh में NotLoading नहीं भेज पाएगी. ऐसा तब होगा, जब वह पहले से ही Loading पर हो. 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.Invalid नाम का तीसरा LoadResult रिटर्न टाइप जोड़ा गया है. जब 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 स्ट्रीम, जैसे कि LivePagedListBuilder या RxPagedListBuilder से प्लेसहोल्डर की शुरुआती वैल्यू (InitialPagedList) सबमिट करने पर, पहले से लोड किया गया डेटा अब नहीं मिटेगा.
वर्शन 3.1.0-alpha02
1 जुलाई, 2021
androidx.paging:paging-*:3.1.0-alpha02 रिलीज़ हो गया है. वर्शन 3.1.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
UI में दिखाए गए पेजों के अपडेट होने के तुरंत बाद ट्रिगर होने वाले, 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)
गड़बड़ियां ठीक की गईं
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 एक्सटेंशन उपलब्ध कराता था. इसका मतलब है कि 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-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को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से कनेक्ट करने के लिए किया जाता है. अब ये दोनों, option key param को स्वीकार करते हैं. इससे आपको आइटम को दिखाने वाली स्टेबल कुंजी तय करने की सुविधा मिलती है. कुंजियों के बारे में ज़्यादा जानने के लिए, यहां जाएं. (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 और item getter को अब ऑब्ज़र्व किया जा सकता है. इससे इसका इस्तेमाल 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 आर्टफ़ैक्ट, Paging Library और 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 कोरूटीन और फ़्लो के लिए बेहतर सपोर्ट
- सदस्यता रद्द करने से जुड़ी सहायता
- लोड होने की स्थिति और गड़बड़ी के सिग्नल
- फिर से कोशिश करें + रीफ़्रेश करने की सुविधा
- 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()को कॉल किए जाने पर, Main थ्रेड पर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 “स्टक” हो जाता था.
वर्शन 3.0.0-beta01
10 फ़रवरी, 2021
androidx.paging:paging-*:3.0.0-beta01 रिलीज़ हो गया है. वर्शन 3.0.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Rx2 और Rx3 रैपर अब उस एक्सपेरिमेंटल एनोटेशन को दिखाते हैं जिस पर वे निर्भर करते हैं. अगर आपने paging-rxjava2 या paging-rxjava3 में Rx कंपैट रैपर का इस्तेमाल किया है, तो अब आपको
@OptIn(ExperimentalCoroutinesApi::class)(Ib1f9d) का इस्तेमाल करके एनोटेट करना होगा
गड़बड़ियां ठीक की गईं
- संगतता पाथ के ज़रिए v2
DataSourceएपीआई का इस्तेमाल करते समय, कभी-कभी दिखने वालीIndexOutOfBoundsException: Inconsistency detectedसमस्या को ठीक किया गया DataSourceको कंपैटिबिलिटी पाथ के ज़रिए इस्तेमाल करने पर,isInvalidको शुरू करने के दौरान कॉल करने की सुविधा अब मुख्य थ्रेड के बजाय, fetchDispatcher पर सही तरीके से लॉन्च की जाती है. इस अपडेट से, 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 का इस्तेमाल नहीं किया जाता है, तो remote 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)
- Java का इस्तेमाल करने वाले लोगों के लिए, .cachedIn() का एक ओवरलोड जोड़ा गया है. यह Lifecycle या 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)- Pager में अब एक ही एक्सपेरिमेंटल कंस्ट्रक्टर है. साथ ही, इसमें रेगुलर कंस्ट्रक्टर भी हैं. एक्सपेरिमेंटल एपीआई को ऑप्ट-इन एनोटेशन के ज़रिए, नॉन-एक्सपेरिमेंटल पब्लिक एपीआई में लीक करने के बजाय, अब ऐसा किया गया है. (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) - हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें .snapshot(), .peek() जैसे प्रज़ेंटर-साइड एपीआई, ListUpdateCallback अपडेट में पुरानी (आउट-ऑफ़-डेट) सूची दिखाते थे.
- उस बग को ठीक किया गया है जिसकी वजह से, RemoteMediator के साथ इस्तेमाल किए जाने पर Separators ऑपरेटर, हेडर या फ़ुटर नहीं जोड़ते थे
- उस गड़बड़ी को ठीक किया गया है जिसमें RemoteMediator के लिए LoadState, NotLoading पर अपडेट होने के बजाय Loading स्टेट में अटक जाता था
- उस गड़बड़ी को ठीक किया गया है जिसमें Paging2.0 के साथ काम करने वाला एपीआई,
.asPagingSourceFactory(), बैकिंगDataSourceको गलत CoroutineDispatcher पर शुरू कर सकता था. इससे क्रैश और एएनआर की संभावित समस्याएं हल हो जाती हैं. खास तौर पर, जब 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 }
गड़बड़ियां ठीक की गईं
- endOfPaginationReached for RemoteMediator
REFRESHअब LoadState अपडेट में सही तरीके से दिखता है. साथ ही, यह रिमोटAPPENDऔरPREPENDको ट्रिगर होने से रोकता है. (I94a3f, b/155290248) - शुरुआती पेज खाली होने या फ़िल्टर करने की सुविधा का ज़्यादा इस्तेमाल करने की वजह से, खाली सूची दिखने पर भी अब पेजिंग की सुविधा
PREPENDयाAPPENDलोड होने से नहीं रुकेगी. (I3e702, b/168169730) - उस समस्या को ठीक किया गया है जिसकी वजह से, अमान्य होने की स्थिति में
getRefreshKeyको PagingSource की बाद की जनरेशन पर कॉल नहीं किया जाता था. (I45460, b/170027530)
बाहरी योगदान
- InvalidatingPagingSourceFactory नाम की एक नई ऐब्स्ट्रैक्ट क्लास जोड़ी गई है. इसमें
.invalidate()एपीआई है, जो इससे जनरेट होने वाले सभी PagingSource को अमान्य कर देता है. @claraf3 को धन्यवाद! (Ie71fc, b/160716447)
मौजूदा समस्याएं
- RemoteMediator b/172254056 का इस्तेमाल करते समय, ऐसा हो सकता है कि .insertSeparators() ट्रांसफ़ॉर्म से मिले हेडर और फ़ुटर तुरंत न दिखें
- RemoteMediator का इस्तेमाल करने पर, रिमोट
LoadStateअटक सकता है. ऐसा तब होता है, जब अमान्य होने की प्रोसेस औरPagingSource.load(LoadParams.Refresh(...)),RemoteMediator.load()के b/173717820 को वापस भेजने से पहले पूरी हो जाती है
वर्शन 3.0.0-alpha09
11 नवंबर, 2020
androidx.paging:paging-*:3.0.0-alpha09 रिलीज़ हो गया है. वर्शन 3.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- replaceWith क्लॉज़ के साथ, dataRefreshFlow / Listener के तरीकों को पूरी तरह से बंद कर दिया गया है. (I6e2dd)
गड़बड़ियां ठीक की गईं
- RemoteMediator के साथ सेपरेटर इस्तेमाल करते समय,
IllegalArgumentExceptionके थ्रो होने की समस्या को ठीक किया गया है. साथ ही, रिमोट लोड के दौरान अमान्य होने की समस्या को भी ठीक किया गया है. रिमोट लोड, endOfPagination दिखाता है और अब भी चल रहा है (I3a260)
वर्शन 3.0.0-alpha08
28 अक्टूबर, 2020
androidx.paging:paging-*:3.0.0-alpha08 रिलीज़ हो गया है. वर्शन 3.0.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin / Java के
DataSource.InvalidatedCallbackवैरिएंट को एक साथ जोड़ दिया गया है. इसके लिए, Kotlin में SAM-conversion को चालू किया गया है. यह फ़ंक्शनल इंटरफ़ेस के ज़रिए किया गया है. यह Kotlin 1.4 में उपलब्ध है. इस अपडेट में, एक गड़बड़ी को भी ठीक किया गया है. इस गड़बड़ी में,.mapया.mapByPageसे बदलने के बाद, अमान्य किए गए कॉलबैक के Kotlin वर्शन को कॉल नहीं किया जाता था. (I1f244, b/165313046)
गड़बड़ियां ठीक की गईं
- ViewPager के साथ Paging के इंटरैक्शन को काफ़ी हद तक बेहतर बनाया गया है. खास तौर पर, पेज के अमान्य होने की वजह से, पेजिंग अब
RemoteMediator#loadकॉल को रद्द नहीं करेगी. साथ ही, यह तब तक लोड करने का अनुरोध नहीं करेगा, जब तक रीफ़्रेश करने की ज़रूरत होती है और रीफ़्रेश करने का अनुरोध पूरा नहीं हो जाता. (I6390b, b/162252536) - MissingGetterMatchingBuilder के लिए एपीआई लिंट चेक, androidx के लिए चालू है (I4bbea, b/138602561)
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से
.withLoadState*ConcatAdapterहेल्पर, बैकग्राउंड थ्रेड से RecyclerView को सूचना देने की वजह से क्रैश हो जाते थे (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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
UnsupportedOperationExceptionके साथ, स्टेबल आईडी के लिए सहायता उपलब्ध न होने के बारे में ज़्यादा साफ़ तौर पर मैसेज दिखाया जाता है. यह मैसेज अब तब दिखता है, जबPagingDataAdapter.setHasStableIdsको कॉल किया जाता है. (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औरPagingDataAdapterमेंpeek()एपीआई जोड़ा गया है, ताकि पेज लोड होने के ट्रिगर के बिना ही, दिखाए गए डेटा को ऐक्सेस किया जा सके. (I38898, b/159104197)PagingDataAdapterऔरAsyncPagingDataDifferमेंsnapshot()API जोड़ा गया है. इससे, पेज फ़ेच किए बिना दिखाए गए आइटम वापस पाए जा सकते हैं. (I566b6, b/159104197)- स्टैटिक सूचियां दिखाने के लिए,
PagingData.from(List<T>)कंस्ट्रक्टर जोड़ा गया है.इसे PagingData के पूरे फ़्लो के साथ जोड़ा जा सकता है, ताकि कुछ स्थितियों में स्टैटिक सूचियां दिखाई जा सकें. उदाहरण के लिए, शुरुआती REFRESH पूरा होने से पहले या सिर्फ़ ट्रांसफ़ॉर्मेशन की जांच करने के लिए. (Id134d) - dataRefresh Flow / Listener API को बंद कर दिया गया है. इनका इस्तेमाल REFRESH पर दिखाए गए आइटम की स्थिति को दिखाने के लिए किया जाता था. हालांकि, loadState Flow / Listener कॉलबैक के समय और itemCount प्रॉपर्टी में सुधार होने की वजह से, अब इनकी ज़रूरत नहीं है (Ia19f3)
PagingSourceऔरRemoteMediatorके लिए, RxJava3 के साथ काम करने वाले रैपर जोड़े गए (I49ef3, b/161480176)
गड़बड़ियां ठीक की गईं
toPagingSourceFactoryहेल्पर के ज़रिएPositionalDataSourceमें बदले गएPagingSource, अब जंप करने की सुविधा के साथ काम करते हैं. इनमें 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)
- Java से DataSource kotlin map फ़ंक्शन के वैरिएंट छिपाए गए हैं, ताकि ओरिजनल और kotlin वैरिएंट के बीच अस्पष्टता को दूर किया जा सके. (If7b23, b/161150011)
- Kotlin का इस्तेमाल करने वाले लोगों की सुविधा के लिए बनाए गए फ़ालतू एपीआई को @JvmSynthetic के तौर पर मार्क किया गया है (I56ae5)
- LoadResult.Page के कंस्ट्रक्टर के लिए ओवरलोड जोड़े गए हैं. ये कंस्ट्रक्टर, itemsBefore और itemsAfter को COUNT_UNDEFINED पर सेट करते हैं (I47849)
- मौजूदा PagingData ऑपरेटर में, सस्पेंड करने के तरीकों को स्वीकार करने की सुविधा जोड़ी गई है. साथ ही, Java का इस्तेमाल करने वाले लोगों के लिए, mapSync, flatMapSync, और filterSync जैसे नए ऑपरेटर जोड़े गए हैं. मौजूदा ट्रांसफ़ॉर्मेशन के तरीकों को एक्सटेंशन फ़ंक्शन में ले जाया गया है. इसलिए, Kotlin का इस्तेमाल करने वाले लोगों को अब इन्हें इंपोर्ट करना होगा. (I34239, b/159983232)
गड़बड़ियां ठीक की गईं
- Room (and PositionalDataSource) PagingSources अब पहले पेज के हिस्से के तौर पर लीडिंग सेपरेटर दिखाएंगे, ताकि उपयोगकर्ता को इसे देखने के लिए स्क्रोल न करना पड़े. (I6f747, b/160257628)
- अब प्लेसहोल्डर पर आइटम ऐक्सेस करने पर, PagingSource लोड सही तरीके से ट्रिगर होते हैं. ऐसा तब तक होता है, जब तक कि 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) शामिल हैं- अडैप्टर एपीआई,
dataRefreshFlowऔरdataRefreshListenerअब एक बूलियन पास करते हैं. इससे यह पता चलता है किPagingDataखाली है या नहीं (I6e37e, b/159054196) - RemoteMediator के लिए RxJava और Guava API जोड़े गए - 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 में ये बदलाव शामिल हैं.
Paging Library को 3.0 वर्शन में अपडेट कर दिया गया है, ताकि कई नई मुख्य सुविधाएं चालू की जा सकें.
वर्शन 3.0 की नई सुविधाएं
- Kotlin कोरूटीन और फ़्लो के लिए बेहतर सपोर्ट.
- coroutines suspend फ़ंक्शन, RxJava Single या Guava ListenableFuture प्रिमिटिव के साथ एसिंक लोडिंग की सुविधा.
- पहले से मौजूद लोड स्टेट और गड़बड़ी के सिग्नल, रिस्पॉन्सिव यूज़र इंटरफ़ेस (यूआई) डिज़ाइन के लिए. इनमें फिर से कोशिश करने और रीफ़्रेश करने की सुविधा शामिल है.
- रिपॉज़िटरी लेयर में सुधार
- डेटा सोर्स का आसान इंटरफ़ेस
- नेटवर्क और डेटाबेस के पेजों को आसान तरीके से नंबर देना
- सदस्यता रद्द करने से जुड़ी सहायता
- प्रज़ेंटेशन लेयर में किए गए सुधार
मौजूदा समस्याएं
- Paging 3 के JavaDoc अभी उपलब्ध नहीं हैं. इस बीच, कृपया ऊपर लिंक की गई गाइड या 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जगह की जानकारी देने वाले डेटा सोर्स से लगातार लोड होने वाले शुरुआती डेटा को अब पिछली बार ऐक्सेस की गई जगह के हिसाब से दिखाया जाता है. ऐसा तब होता है, जब प्लेसहोल्डर बंद होते हैं
वर्शन 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 एक्सटेंशन लाइब्रेरी जोड़ी गई है. इसके अलावा, एपीआई में कई अन्य बदलाव किए गए हैं और बग ठीक किए गए हैं.
एपीआई में हुए बदलाव
- मेमोरी में लोड किए गए आइटम की संख्या को सीमित करने के लिए,
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/73781068PagedList.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
गड़बड़ियां ठीक की गईं
- कुछ मामलों में, पहले से मौजूद कॉन्टेंट के गायब होने की समस्या ठीक की गई (प्लेसहोल्डर बंद हैं, 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 के लिए, एपीआई में और बदलाव करने का प्लान नहीं बना रहे हैं. साथ ही, एपीआई में किसी भी तरह के बदलाव के लिए, ज़रूरी शर्तें बहुत ज़्यादा हैं.
Paging के लिए Alpha 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
पेजिंग 1.0.0-alpha7 को Lifecycles 1.1.1 के साथ रिलीज़ किया गया है. Paging alpha7, ऊपर बताई गई Function क्लास के मूव पर निर्भर करता है. इसलिए, आपको lifecycle:runtime डिपेंडेंसी को android.arch.lifecycle:runtime:1.1.1 पर अपडेट करना होगा.
पेजिंग alpha7 को बीटा वर्शन से पहले की फ़ाइनल रिलीज़ के तौर पर प्लान किया गया है.
एपीआई में हुए बदलाव
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 का पता लगाने के लिए अतिरिक्त लॉगिंग (और Room-साइड फ़िक्स)
- Javadoc के सैंपल कोड से जुड़ी समस्याएं ठीक की गईं b/70411933, b/71467637