पृष्ठांकन

पेजिंग लाइब्रेरी की मदद से, अपने ऐप्लिकेशन के RecyclerView में डेटा को धीरे-धीरे और आसानी से लोड किया जा सकता है.

इस टेबल में, androidx.paging ग्रुप में मौजूद सभी आर्टफ़ैक्ट की सूची दी गई है.

सह-प्रॉडक्ट स्टेबल वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
paging-* 3.5.3 - - -
paging-compose 3.5.3 - - -
इस लाइब्रेरी को पिछली बार इस तारीख को अपडेट किया गया था: 12 अक्टूबर, 2026

डिपेंडेंसी का एलान करना

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 में ये बदलाव शामिल हैं.

नई सुविधाएं

वर्शन 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)

एपीआई में हुए बदलाव

वर्शन 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 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 में ये कमिट शामिल हैं.

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

  • शुरुआती रीफ़्रेश के दौरान भेजे गए रीफ़्रेश और फिर से कोशिश करने के सिग्नल अब सेव किए जाएंगे. साथ ही, पेजिंग प्रेजेंटर तैयार होने के बाद, उन्हें अपने-आप फिर से भेजा जाएगा.

बाहरी योगदान

  • गड़बड़ी ठीक करने का तरीका (#754) सबमिट करने के लिए, ईवा आपका धन्यवाद

वर्शन 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)

बाहरी योगदान

वर्शन 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) बनाकर और उसे PagingData MutableStateFlow में रैप करके, नकली डेटा की सूची की झलक देखने की सुविधा. जैसे, 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>> पर asSnapshot Kotlin एक्सटेंशन, जो 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 Compose 1.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)
  • asSnapshot API में अब 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>> पर asSnapshot Kotlin एक्सटेंशन के ज़रिए किया जाता है. यह 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 values
    

    asSnapshot, 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 अब हमेशा false LoadType.REFRESH के लिए होता है. पहले, RemoteMediator REFRESH के लिए 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) पर सेट होती हैं. इसका मतलब है कि:

    1. अगर RemoteMediator का इस्तेमाल किया जाता है, तो मीडिएटर स्टेट हमेशा पॉप्युलेट होंगे.
    2. .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 DataSource API का इस्तेमाल करते समय, कभी-कभी दिखने वाली 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 }
    

    (Ib5570, b/173530908)

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

  • 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 की नई सुविधाएं

आम समस्याएं

  • 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/73781068
  • PagedList.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