نظرة عامة على مكتبة Paging   جزء من Android Jetpack.

تساعدك مكتبة Paging في تحميل صفحات البيانات وعرضها من مجموعة بيانات أكبر من مساحة التخزين المحلية أو عبر شبكة. يتيح هذا النهج لتطبيقك استخدام كل من معدل نقل البيانات في الشبكة وموارد النظام بكفاءة أكبر. تم تصميم مكوّنات مكتبة Paging لكي تتوافق مع بنية تطبيقات Android المُقترَحة، وأن تتكامل بسلاسة مع مكوّنات Jetpack الأخرى، وأن توفّر دعمًا من الدرجة الأولى لـ Kotlin.

مزايا استخدام مكتبة الفهرسة

تتضمّن مكتبة "التنقّل في الصفحة" الميزات التالية:

  • ذاكرة التخزين المؤقت في الذاكرة لبياناتك المفصّلة يساعد ذلك في ضمان استخدام تطبيقك لموارد النظام بكفاءة أثناء العمل مع البيانات المفصّلة.
  • ميزة "إزالة تكرار الطلبات" المضمّنة، والتي تساعد في ضمان استخدام تطبيقك لسعة نقل بيانات الشبكة وموارد النظام بكفاءة
  • محدّدات ومقاييس RecyclerView قابلة للضبط تطلب البيانات تلقائيًا عندما ينتقل المستخدم إلى نهاية البيانات المحمَّلة.
  • إتاحة ميزات ممتازة لعمليات التشغيل المتعدّد المتزامن ومسارات Kotlin، بالإضافة إلى LiveData وRxJava
  • إتاحة معالجة الأخطاء بشكل مضمّن، بما في ذلك إمكانات إعادة التحميل وإعادة المحاولة

تقديم تعليقات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. تحقَّق من المشاكل الحالية لهذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زرّ النجمة.

إنشاء مشكلة جديدة

يمكنك الاطّلاع على مستندات "أداة تتبُّع المشاكل" للحصول على مزيد من المعلومات عن إرسال الملاحظات.

ضبط إعدادات الجهاز

لاستيراد مكوّنات Paging إلى تطبيق Android، أضِف التبعيات التالية إلى ملف build.gradle في تطبيقك:

Groovy

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")
}

بنية المكتبة

تعمل مكوّنات مكتبة Paging في ثلاث طبقات من تطبيقك:

  • طبقة المستودع
  • طبقة ViewModel
  • طبقة واجهة المستخدم
صورة تعرِض تدفّق البيانات المفصّلة من مكوّنات PagingSource أو RemoteMediator في طبقة المستودع إلى مكوّن Pager في طبقة ViewModel
    بعد ذلك، يعرض مكوّن Pager تدفقًا لبيانات التنقّل إلى
    PagingDataAdapter في طبقة واجهة المستخدم.
الشكل 1. مثال على كيفية ملاءمة مكتبة Paging لبنية تطبيقك

يوضِّح هذا القسم مكوّنات مكتبة الفهرسة التي تعمل في كل طبقة وكيفية عملها معًا لتحميل البيانات المفصّلة وعرضها.

طبقة المستودع

المكوّن الأساسي لـ "مكتبة الفهرسة" في طبقة المستودع هو PagingSource. يحدِّد كل عنصر PagingSource مصدر البيانات وكيفية استرداد البيانات من هذا المصدر. يمكن لعنصر PagingSource تحميل البيانات من أي مصدر واحد، بما في ذلك مصادر الشبكة وقواعد البيانات المحلية.

يمكنك أيضًا استخدام المكوّن التالي من مكتبة Paging: RemoteMediator. يعالج عنصر RemoteMediator تقسيم الصفحة من مصدر بيانات متعدّد الطبقات، مثل مصدر بيانات على الشبكة مع ذاكرة تخزين مؤقت لقاعدة بيانات محلية.

طبقة ViewModel

يقدّم المكوّن Pager واجهة برمجة تطبيقات عامة لإنشاء نُسخ من PagingData يتم عرضها في البثّات التفاعلية، استنادًا إلى عنصر PagingSource وأحد عناصر الإعداد PagingConfig.

المكوّن الذي يربط طبقة ViewModel بواجهة المستخدم هو PagingData. PagingData العنصر هو حاوية لنبذة عن البيانات المفصّلة. يُجري طلب بحث عن عنصر PagingSource ويحفظ النتيجة.

طبقة واجهة المستخدم

عنصر مكتبة الفهرسة الأساسية في طبقة واجهة المستخدم هو PagingDataAdapter، وهو محوِّل RecyclerView يعالج البيانات المفصَّلة.

بدلاً من ذلك، يمكنك استخدام العنصر المُرفَق AsyncPagingDataDiffer لإنشاء محوِّل مخصّص.

مصادر إضافية

للاطّلاع على مزيد من المعلومات عن مكتبة Paging، اطّلِع على المراجع الإضافية التالية:

الدروس التطبيقية حول الترميز