סקירה כללית על ספריית 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
. כל אובייקט PagingSource
מגדיר מקור נתונים ואת אופן אחזור הנתונים מהמקור הזה. אובייקט PagingSource
יכול לטעון נתונים מכל מקור יחיד, כולל מקורות רשת ומסדי נתונים מקומיים.
רכיב נוסף בספריית הגיליון הוא RemoteMediator
. אובייקט RemoteMediator
מטפל בדפים ממקור נתונים שכבות, כמו מקור נתונים ברשת עם מטמון של מסד נתונים מקומי.
שכבת ViewModel
הרכיב Pager
מספק API ציבורי ליצירת מכונות של PagingData
שחשופות בזרמים תגובתיים, על סמך אובייקט PagingSource
ואובייקט תצורה PagingConfig
.
הרכיב שמחבר את השכבה ViewModel
לממשק המשתמש הוא PagingData
. אובייקט PagingData
הוא מאגר של תמונת מצב של נתונים שמחולקים לדפים. הוא שולח שאילתה לאובייקט PagingSource
ושומר את התוצאה.
שכבת ממשק המשתמש
הרכיב הראשי של ספריית הגיליון ב-UI הוא PagingDataAdapter
, מתאם RecyclerView
שמטפל בנתונים שמחולקים לדפים.
לחלופין, אפשר להשתמש ברכיב AsyncPagingDataDiffer
שכלול בערכה כדי ליצור מתאם מותאם אישית משלכם.
מקורות מידע נוספים
מידע נוסף על ספריית הגיליון:
Codelabs
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- טעינת נתונים שמחולקים לדפים והצגתם
- מעבר ל-Paging 3
- דף מהרשת וממסד הנתונים