סקירה כללית על ספריית Paging   חלק מ-Android Jetpack.

הספרייה 'דפים' עוזרת לכם לטעון ולהציג דפי נתונים ממערך נתונים גדול יותר, מאחסון מקומי או דרך רשת. הגישה הזו מאפשרת לאפליקציה להשתמש בצורה יעילה יותר ברוחב הפס של הרשת ובמשאבי המערכת. הרכיבים של ספריית ה-Paging תוכננו כך שיתאימו לארכיטקטורה המומלצת של אפליקציות Android, ישתלבו בצורה חלקה עם רכיבים אחרים של Jetpack ויספקו תמיכה ברמה הגבוהה ביותר ב-Kotlin.

היתרונות של השימוש בספריית הטעינה

ספריית הגיליון כוללת את התכונות הבאות:

  • אחסון במטמון בזיכרון לנתונים שמחולקים לדפים. כך אפשר להבטיח שהאפליקציה תשתמש ביעילות במשאבי המערכת בזמן העבודה עם נתונים שמחולקים לדפים.
  • ביטול כפילויות של בקשות מובנה, שעוזר לוודא שהאפליקציה משתמשת ביעילות ברוחב הפס של הרשת ובמשאבי המערכת.
  • מתאמים ניתנים להתאמה אישית של RecyclerView שמבקשים נתונים באופן אוטומטי כשהמשתמש גולל לקראת סוף הנתונים שהועלו.
  • תמיכה ברמה גבוהה ב-coroutines וב-flows של Kotlin, וגם ב-LiveData וב-RxJava.
  • תמיכה מובנית בניהול שגיאות, כולל יכולות של רענון וניסיון חוזר.

שליחת משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לבדוק את הבעיות הקיימות בספרייה הזו. כדי להוסיף את הקול שלכם לבעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף על שליחת משוב זמין במסמכי העזרה של Issue Tracker.

הגדרה

כדי לייבא רכיבי גיליון נתונים לאפליקציה ל-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 בשכבת המאגר לרכיב Pager בשכבת ViewModel.
    לאחר מכן, רכיב ה-Pager חושף זרימה של PagingData ל-PagingDataAdapter בשכבת ממשק המשתמש.
איור 1. דוגמה לאופן שבו ספריית הגיליון מתאימה לארכיטקטורה של האפליקציה.

בקטע הזה מתוארים הרכיבים של ספריית הגיליון שמפעילים בכל שכבה, ואיך הם פועלים יחד כדי לטעון ולהציג נתונים שמחולקים לדפים.

שכבת המאגר

הרכיב הראשי של ספריית הפידים בשכבת המאגר הוא PagingSource. כל אובייקט PagingSource מגדיר מקור נתונים ואת אופן אחזור הנתונים מהמקור הזה. אובייקט PagingSource יכול לטעון נתונים מכל מקור יחיד, כולל מקורות רשת ומסדי נתונים מקומיים.

רכיב נוסף בספריית הגיליון הוא RemoteMediator. אובייקט RemoteMediator מטפל בדפים ממקור נתונים שכבות, כמו מקור נתונים ברשת עם מטמון של מסד נתונים מקומי.

שכבת ViewModel

הרכיב Pager מספק API ציבורי ליצירת מכונות של PagingData שחשופות בזרמים תגובתיים, על סמך אובייקט PagingSource ואובייקט תצורה PagingConfig.

הרכיב שמחבר את השכבה ViewModel לממשק המשתמש הוא PagingData. אובייקט PagingData הוא מאגר של תמונת מצב של נתונים שמחולקים לדפים. הוא שולח שאילתה לאובייקט PagingSource ושומר את התוצאה.

שכבת ממשק המשתמש

הרכיב הראשי של ספריית הגיליון ב-UI הוא PagingDataAdapter, מתאם RecyclerView שמטפל בנתונים שמחולקים לדפים.

לחלופין, אפשר להשתמש ברכיב AsyncPagingDataDiffer שכלול בערכה כדי ליצור מתאם מותאם אישית משלכם.

מקורות מידע נוספים

מידע נוסף על ספריית הגיליון:

Codelabs