पेजिंग लाइब्रेरी के बारे में खास जानकारी   यह Android Jetpack का हिस्सा है.

पेजिंग लाइब्रेरी की मदद से, किसी बड़े डेटासेट के पेज को लोकल स्टोरेज या नेटवर्क से लोड और दिखाया जा सकता है. इस तरीके से, आपका ऐप्लिकेशन नेटवर्क बैंडविड्थ और सिस्टम के संसाधनों, दोनों का ज़्यादा बेहतर तरीके से इस्तेमाल कर पाता है. पेजिंग लाइब्रेरी के कॉम्पोनेंट को, सुझाई गई Android ऐप्लिकेशन के आर्किटेक्चर में फ़िट करने के लिए डिज़ाइन किया गया है. साथ ही, इन्हें Jetpack के अन्य कॉम्पोनेंट के साथ आसानी से इंटिग्रेट किया जा सकता है. साथ ही, ये Kotlin के साथ बेहतरीन तरीके से काम करते हैं.

पेजिंग लाइब्रेरी का इस्तेमाल करने के फ़ायदे

पेजिंग लाइब्रेरी में ये सुविधाएं शामिल हैं:

  • पेज किए गए डेटा के लिए, कैश मेमोरी में कैश मेमोरी. इससे यह पक्का करने में मदद मिलती है कि पेज वाले डेटा के साथ काम करते समय, आपका ऐप्लिकेशन सिस्टम के संसाधनों का बेहतर तरीके से इस्तेमाल करे.
  • अनुरोधों को डुप्लीकेट होने से रोकने की सुविधा, जो यह पक्का करने में मदद करती है कि आपका ऐप्लिकेशन नेटवर्क बैंडविड्थ और सिस्टम के संसाधनों का बेहतर तरीके से इस्तेमाल करे.
  • कॉन्फ़िगर किए जा सकने वाले ऐसे RecyclerView एडेप्टर जो उपयोगकर्ता के लोड किए गए डेटा के आखिर तक स्क्रोल करने पर, अपने-आप डेटा का अनुरोध करते हैं.
  • Kotlin कोरुटिन और फ़्लो के साथ-साथ, LiveData और RxJava के लिए बेहतरीन सहायता.
  • गड़बड़ी को मैनेज करने के लिए, बिल्ट-इन सहायता. इसमें रीफ़्रेश करने और फिर से कोशिश करने की सुविधाएं भी शामिल हैं.

सुझाव या राय दें

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

नई समस्या बनाना

सुझाव, शिकायत या राय सबमिट करने के बारे में ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.

सेटअप

अपने Android ऐप्लिकेशन में पेजिंग कॉम्पोनेंट इंपोर्ट करने के लिए, अपने ऐप्लिकेशन की build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:

ग्रूवी

dependencies {
  def paging_version = "3.3.2"

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

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

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

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

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

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

Kotlin

dependencies {
  val paging_version = "3.3.2"

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

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

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

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

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

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

लाइब्रेरी आर्किटेक्चर

पेजिंग लाइब्रेरी के कॉम्पोनेंट, आपके ऐप्लिकेशन की तीन लेयर में काम करते हैं:

  • रिपॉज़िटरी लेयर
  • ViewModel लेयर
  • यूज़र इंटरफ़ेस (यूआई) लेयर
इस इमेज में, पेज किए गए डेटा के फ़्लो को दिखाया गया है. यह डेटा, रिपॉज़िटरी लेयर में मौजूद PagingSource या RemoteMediator कॉम्पोनेंट से, ViewModel लेयर में मौजूद Pager कॉम्पोनेंट में जाता है.
    इसके बाद, पेजर कॉम्पोनेंट, यूज़र इंटरफ़ेस (यूआई) लेयर में PagingDataAdapter को PagingData का फ़्लो दिखाता है.
पहली इमेज. इस उदाहरण में बताया गया है कि पेजिंग लाइब्रेरी, आपके ऐप्लिकेशन के आर्किटेक्चर में कैसे फ़िट होती है.

इस सेक्शन में, पेजिंग लाइब्रेरी के उन कॉम्पोनेंट के बारे में बताया गया है जो हर लेयर पर काम करते हैं. साथ ही, यह भी बताया गया है कि पेज किए गए डेटा को लोड और दिखाने के लिए, ये कॉम्पोनेंट एक साथ कैसे काम करते हैं.

रिपॉज़िटरी लेयर

रिपॉज़िटरी लेयर में, पेजिंग लाइब्रेरी का मुख्य कॉम्पोनेंट PagingSource है. हर PagingSource ऑब्जेक्ट, डेटा के सोर्स और उस सोर्स से डेटा पाने का तरीका तय करता है. PagingSource ऑब्जेक्ट, किसी भी सोर्स से डेटा लोड कर सकता है. इसमें नेटवर्क सोर्स और लोकल डेटाबेस भी शामिल हैं.

पेजिंग लाइब्रेरी का एक और कॉम्पोनेंट, RemoteMediator है. इसका इस्तेमाल किया जा सकता है. RemoteMediator ऑब्जेक्ट, लेयर वाले डेटा सोर्स से पेजिंग को मैनेज करता है. जैसे, लोकल डेटाबेस कैश मेमोरी वाला नेटवर्क डेटा सोर्स.

ViewModel लेयर

Pager कॉम्पोनेंट, PagingData के इंस्टेंस बनाने के लिए एक सार्वजनिक एपीआई उपलब्ध कराता है. ये इंस्टेंस, PagingSource ऑब्जेक्ट और PagingConfig कॉन्फ़िगरेशन ऑब्जेक्ट के आधार पर, रिएक्टिव स्ट्रीम में दिखाए जाते हैं.

ViewModel लेयर को यूज़र इंटरफ़ेस (यूआई) से जोड़ने वाला कॉम्पोनेंट, PagingData है. PagingData ऑब्जेक्ट, पेज किए गए डेटा के स्नैपशॉट के लिए एक कंटेनर होता है. यह किसी PagingSource ऑब्जेक्ट से क्वेरी करता है और नतीजे को सेव करता है.

यूज़र इंटरफ़ेस (यूआई) लेयर

यूज़र इंटरफ़ेस (यूआई) लेयर में, पेजिंग लाइब्रेरी का मुख्य कॉम्पोनेंट PagingDataAdapter है. यह एक ऐसा RecyclerView एडेप्टर है जो पेज किए गए डेटा को मैनेज करता है.

इसके अलावा, अपना कस्टम अडैप्टर बनाने के लिए, शामिल किए गए AsyncPagingDataDiffer कॉम्पोनेंट का इस्तेमाल किया जा सकता है.

अन्य संसाधन

पेजिंग लाइब्रेरी के बारे में ज़्यादा जानने के लिए, यहां दिए गए अन्य संसाधन देखें:

कोडलैब