ترقيم الصفحات

تسهِّل لك Paging Libraryتحميل البيانات تدريجيًا وسلاسة ضمن RecyclerView في تطبيقك.

يسرد هذا الجدول جميع العناصر في مجموعة androidx.paging.

العناصر الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
paging-* 3.3.5 - - -
paging-compose 3.3.5 - - -
تاريخ آخر تعديل على هذه المكتبة: 11 كانون الأول (ديسمبر) 2024

الإعلان عن التبعيات

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

أضِف التبعيات للعناصر التي تحتاج إليها في ملف 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")
}

للحصول على معلومات عن استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.

لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.

ملاحظات

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

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

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 3.3

الإصدار 3.3.5

11 كانون الأول (ديسمبر) 2024

تم إصدار androidx.paging:paging-*:3.3.5. يحتوي الإصدار 3.3.5 على عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يؤدي إلى ظهور IndexOutOfBoundsException في RecyclerView عندما ينتقل المستخدم للأعلى أو للأسفل أثناء تعديل RecyclerView. (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 المتوافق مع أنظمة التشغيل المتعددة: watchos وtvos وlinuxArm64 (90c9768)، (53e0eca)

الإصدار 3.3.1

24 تموز (يوليو) 2024

تم إصدار androidx.paging:paging-*:3.3.1. يحتوي الإصدار 3.3.1 على عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح مشكلة تعذُّر بدء المزيد من عمليات التحميل في AsyncPagingDataDiffer أو واجهات برمجة التطبيقات المبنية عليها، مثل PagingDataAdapter المستخدَمة مع RecyclerView، عند إعادة تحميل مصدر البيانات الأساسي أثناء الانتقال للأعلى أو للأسفل. (I60ca5، b/352586078)
  • تم إصلاح عطل يحدث عند إزالة عناصر من مصدر البيانات الاحتياطي أثناء الانتقال في RecyclerView باستخدام PagingDataAdapter أو AsyncPagingDataDiffer. (I8c65a، b/347649763)

الإصدار 3.3.0

14 أيار (مايو) 2024

تم إصدار androidx.paging:paging-*:3.3.0. يتضمّن الإصدار 3.3.0 عمليات الربط هذه.

التغييرات المهمة منذ الإصدار 3.2.0

  • أصبحت PagingDataPresenter الآن فئة عامة. يمكن الآن إنشاء تطبيقات عارضة على منصات متعددة استنادًا إلى PagingDataPresenter بدلاً من طلب واجهات برمجة تطبيقات Paging API داخلية أو AsyncPagingDataDiffer في paging-runtime.
  • تمت إضافة طريقتَي المساعدة LoadStates وCombinedLoadStates الجديدتَين في hasError وisIdle للتحقّق مما إذا كانت حالة LoadStates هي "خطأ" أو NotLoading، على التوالي. تمت أيضًا إضافة طريقة awaitNotLoading() Kotlin جديدة في Flow<CombinedLoadStates> تنتظر إلى أن تستقر عملية التحميل في حالة NotLoading أو خطأ.
  • تُرسِل PagingData.empty() الآن حالات NotLoading تلقائيًا ما لم يتم تمرير LoadStates مخصّصة إلى طريقة وضع التصميم. يختلف هذا السلوك عن السلوك الحالي الذي لا يرسل LoadStates عند إرساله إلى PagingDataAdapter أو يرسل حالات التحميل عند جمعها على أنّها LazyPagingItems. عند جمعها على النحو التالي LazyPagingItems، ستعرض الآن أيضًا قائمة فارغة فور الإنشاء الأولي.

توافق لغة Kotlin مع أنظمة التشغيل المتعددة

توفّر Paging الآن عناصر متوافقة مع Kotlin Multiplatform، ويعود الفضل في ذلك إلى حد كبير إلى العمل الذي تم نقله من مشروع multiplatform-paging في CashApp.

  • نقلت paging-common جميع واجهات برمجة تطبيقات Paging 3 إلى common، وهي متوافقة الآن مع jvm وiOS بالإضافة إلى Android.
  • نقلت paging-testing رمزها إلى common وأصبح متوافقًا الآن مع jvm وiOS بالإضافة إلى Android.
  • نقلت 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 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • يستخدم التنقّل الآن تعليق توضيحي @MainThread في AndroidX للرمز البرمجي الشائع. (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 API داخلية أو AsyncPagingDataDiffer في paging-runtime. (Id1f74، b/315214786)
  • تمت إضافة طريقتَي مساعدة جديدة LoadStates وCombinedLoadStates للتحقّق مما إذا كانت حالة LoadStates هي "خطأ" أو NotLoading. تمت أيضًا إضافة واجهة برمجة تطبيقات جديدة تنتظر القيمة LoadStateFlow إلى أن تستقر عملية التحميل في الحالة NotLoading أو حالة الخطأ. (Id6c67)

تغيير السلوك

  • تُرسِل PagingData.empty() الآن حالات NotLoading تلقائيًا ما لم يتم تمرير LoadStates مخصّصة إلى طريقة وضع التصميم. يختلف هذا السلوك عن السلوك الحالي الذي لا يرسل LoadStates عند إرساله إلى PagingDataAdapter أو يرسل حالات التحميل عند جمعها على أنّها LazyPagingItems. عند جمعها على النحو التالي LazyPagingItems، ستعرض الآن أيضًا قائمة فارغة فور الإنشاء الأولي. (I4d11d، b/301833847)

الإصدار 3.3.0-alpha02

20 أيلول (سبتمبر) 2023

تم إصدار androidx.paging:paging-*:3.3.0-alpha02. يحتوي الإصدار 3.3.0-alpha02 على هذه المراجعات.

توافق لغة Kotlin مع أنظمة التشغيل المتعددة

توفّر Paging الآن عناصر متوافقة مع Kotlin Multiplatform، ويعود الفضل في ذلك إلى حد كبير إلى العمل الذي تم نقله من مشروع multiplatform-paging في CashApp. سيتيح لنا ذلك تجنُّب الاختلافات بين المستودعَين والحفاظ على توافقهما.

  • نقلت paging-common جميع واجهات برمجة تطبيقات Paging 3 إلى common، وهي متوافقة الآن مع jvm وiOS بالإضافة إلى Android.
  • نقلت paging-testing رمزها إلى common وأصبح متوافقًا الآن مع jvm وiOS بالإضافة إلى Android.
  • نقلت 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 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تؤدي إلى تعليق واجهة برمجة التطبيقات asSnapshot() لعنصر اختبار الفهرسة عند تمرير مسار تم إنشاؤه باستخدام PagingData.from(List) لأنّ asSnapshot() لن تتوفّر لديه أي معلومات عن وقت انتهاء التحميل (على عكس PagingData.from(List, LoadStates) الزائد). لا يعمل هذا الحلّ البديل إلا مع مسارات التحسين التي يمكن إكمالها (مثل flowOf(PagingData.from(...))). بالنسبة إلى مسارات التحسين التي لا يمكن إكمالها (مثل MutableStateFlow، استخدِم طريقة التحميل الزائد PagingData.from التي توفّر LoadStates). (I502c3)
  • يستخدم الإجراء "إنشاء صفحات" الآن 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 التي تتيح لك التحقّق من سلوك تنفيذ PagingSource المخصّص بشكل مستقل عن Pager وواجهة المستخدم الحقيقية
    • ​​asPagingSourceFactory واجهات برمجة التطبيقات لتحويل Flow<List<Value>> أو List<Value> ثابت إلى PagingSourceFactory يمكن تمريره إلى Pager في الاختبارات
    • asSnapshot إضافة Kotlin في Flow<PagingData<Value>>، والتي تُحوّل Flow<PagingData<Value>> إلى List<Value> مباشر يتيح لك asSnapshot lambda محاكاة واجهة مستخدم تطبيقك من خلال واجهات برمجة التطبيقات، مثل scrollTo أو appendScrollWhile، حتى تتمكّن من التحقّق من صحة لقطة البيانات في أيّ وقت في مجموعة البيانات التي يتم تقسيمها إلى صفحات.
  • تمت إضافة سجلّات تلقائية لعرض معلومات تصحيح أخطاء "التنقّل بين صفحات التطبيق" في مستويَين: VERBOSE وDEBUG. يمكن تفعيل السجلات من خلال الأمر adb shell setprop log.tag.Paging [DEBUG|VERBOSE]. وينطبق ذلك على كلٍّ من "التصفح حسب الصفحات مع طريقة العرض" أو "التصفح حسب الصفحات مع ميزة "الإنشاء".
  • تمت إضافة منشئَين لنوعَي البيانات PagingDataAdapter وAsyncPagingDataDiffer يقبلان CoroutineContext بدلاً من CoroutineDispatcher.
  • تمت إضافة واجهة وظيفية جديدة من النوع PagingSourceFactory توفّر مساحة عرض لواجهة برمجة التطبيقات أكثر وضوحًا من دالات lambda السابقة () -> PagingSource. يمكن استخدام هذا المصنع لإنشاء مثيل لـ Pager.

الإصدار 3.2.0-rc01

‫21 حزيران (يونيو) 2023

تم إصدار androidx.paging:paging-*:3.2.0-rc01. يحتوي الإصدار 3.2.0-rc01 على هذه المراجعات.

المساهمة الخارجية

الإصدار 3.2.0-beta01

7 حزيران (يونيو) 2023

تم إصدار androidx.paging:paging-*:3.2.0-beta01. يحتوي الإصدار 3.2.0-beta01 على هذه المراجعات.

الكتابة على صفحات

  • أصبحت ميزة "إنشاء صفحات" مستقرة رسميًا من حيث واجهة برمجة التطبيقات. ونتيجةً لذلك، تم تعديل الإصدار من 1.0.0-alpha20 ليطابق الآن إصدار جميع عناصر الفهرسة الأخرى.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة واجهات برمجة التطبيقات 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 lambda الحالية. يمكن استخدام هذا المصنع لإنشاء مثيل Pager. (I33165، b/280655188)
  • تمت إضافة واجهة برمجة تطبيقات paging-testing جديدة من List<Value>.asPagingSourceFactory() للحصول على PagingSourceFactory يتم تحميله من قائمة بيانات ثابتة فقط. يجب استخدام الإضافة الحالية في Flow<List<Value>> للاختبار باستخدام أجيال متعددة من البيانات الثابتة. (Id34d1، b/280655188)

تغييرات واجهة برمجة التطبيقات

  • تم الآن وضع تعليق توضيحي على جميع واجهات برمجة التطبيقات المتاحة للجميع في اختبار الفهرسة باستخدام @VisibleForTesting لضمان عدم استخدام هذه الواجهات إلا في الاختبارات. (I7db6e)
  • لم تعُد واجهة برمجة التطبيقات asSnapshot تتطلّب إدخال CoroutineScope. ويتم الآن استخدام السياق المُكتسَب من النطاق الرئيسي بشكل تلقائي. (Id0a78، b/282240990)
  • إعادة ترتيب مَعلمات TestPager لإنشاء العناصر لتتطابق بشكلٍ بديهي مع ترتيب مَعلمات Pager لإنشاء العناصر الفعلية (I6185a)
  • استخدام اختبار الفهرسة المُنقل من نوع lambda () -> 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 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • أصبحت واجهة برمجة التطبيقات Paging Testing API في asSnapshot تضبط مَعلمة loadOperations تلقائيًا على دالة lambda فارغة. يتيح ذلك استدعاء asSnapshot بدون إدخال أي عمليات تحميل لاسترداد البيانات من عملية التحميل الأولية لإعادة التحديث. (Ied354، b/277233770)

تحسينات على المستندات

  • عدّلنا المستندات حول asPagingSourceFactory() لتوضيح أنّها طريقة إضافة في Flow تُعيد إنشاء مصنع يمكن إعادة استخدامه لإنشاء نُسخ من PagingSource. (I5ff4f، I705b5)
  • عدّلنا المستندات حول LoadResult.Pageالمنشئ لتوضيح الحاجة إلى إلغاء itemsBefore وitemsAfter لتفعيل القفزة. (Ied354)

المساهمات الخارجية

الإصدار 3.2.0-alpha04

8 شباط (فبراير) 2023

تم إصدار androidx.paging:paging-*:3.2.0-alpha04. يحتوي الإصدار 3.2.0-alpha04 على هذه المراجعات.

اختبار الفهرسة

  • يحتوي العنصر paging-testing الآن على طريقة asPagingSourceFactory لإنشاء pagingSourceFactory من Flow<List<Value>> ليتم تقديمه إلى Pager. يمثّل كل List<Value>> يتم إرساله من "المسار" إنشاء بيانات مُقسّمة حسب الصفحات. يسهّل ذلك اختبارات الفهرسة على عمليات تحويل PagingData، على سبيل المثال، من خلال إنشاء مصدر بيانات زائف لفهرسة الصفحات من خلاله. (I6f230، b/235528239)
  • تم توسيع نطاق عنصر paging-testing باستخدام واجهات برمجة تطبيقات جديدة مناسبة للتحقّق من صحة البيانات الواردة في Flow<PagingData<T>>. يمكن استخدام ذلك، على سبيل المثال، لتأكيد ناتج Flow<PagingData<T>> من طبقة ViewModel.

    ويتم ذلك من خلال إضافة asSnapshot Kotlin على Flow<PagingData<Value>>، والتي تُحوّل Flow<PagingData<Value>> إلى List<Value> مباشر. تسمح لك دالة asSnapshot lambda بمحاكاة واجهة مستخدم تطبيقك من خلال واجهات برمجة التطبيقات، مثل 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. يمكنك الاطّلاع على اختبار عمليات Kotlin المتعدّدة المهام على Android للحصول على مزيد من المعلومات. (I55fd2 وI5bd26 وI7ce34 وI51f4d وI2249f وId6223 وIc4bab وIb29b9 وIc1238 وI96def وb/235528239)

تغييرات واجهة برمجة التطبيقات

  • تم الآن وضع علامة بشكل صحيح على طلبات UI للوصول إلى getItem وpeek في AsyncPagingDataDiffer وPagingDataAdapter على أنّها لا يمكن الاتصال بها إلا في سلسلة المحادثات الرئيسية. (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 كما هو موضّح في دليل اختبار عمليات التشغيل المتعدّد للكائنات في Kotlin على Android.

يمكن العثور على مثال على واجهات برمجة التطبيقات هذه المستخدَمة في اختبارات room-paging التي تمت إعادة تنظيمها لاستخدام TestPager.

تغييرات واجهة برمجة التطبيقات

  • يتيح هذا الإجراء إجراء تكرار ملائم على مدار LoadResult.Page.data حتى LoadResult.Page.iterator(). يسمح ذلك بشكل غير مباشر باستخدام طريقة flatten في مكتبة Kotlin العادية عند منح List<LoadResult.Page>، مثل استخدام السمة pages من PagingState التي يتم تمريرها إلى الطريقة PagingSource.getRefreshKey. (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).

إصلاح الأخطاء

  • تم إصلاح خطأ عدم توفّر PagingDataDiffer عند استخدام paging-common:3.2.0-alpha01 مع وقت التشغيل paging-runtime:3.1.1 أو إصدار أقدم.(b/235256201)

الإصدار 3.2.0-alpha01

1 حزيران (يونيو) 2022

تم إصدار androidx.paging:paging-*:3.2.0-alpha01. يحتوي الإصدار 3.2.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة عنصرَي إنشاء لـ PagingDataAdapter وAsyncPagingDataDiffer يقبلان CoroutineContext بدلاً من CoroutineDispatcher. (Idc878)
  • لن تؤثر PagingData.from() وPagingData.empty() تلقائيًا في CombinedLoadStates من جانب المُقدِّم. تمت إضافة طريقة تحميل زائدة جديدة تسمح بتمرير sourceLoadStates وremoteLoadStates إلى وظيفتَي الإنشاء هذه للحفاظ على السلوك الحالي لضبط LoadStates ليكون نهائيًا بالكامل (أي NotLoading(endOfPaginationReached = false))، مع خيار تضمين الولايات البعيدة أيضًا إذا لزم الأمر. في حال عدم تمرير LoadStates، سيتم الاحتفاظ بالقيمة السابقة CombinedLoadStates من جانب المُقدّم عند تلقّي القيمة الثابتة PagingData. (Ic3ce5، b/205344028)

إصلاح الأخطاء

  • يتم الآن منح الأولوية بشكل صحيح لنتيجة PagingSource.getRefreshKey() على initialKey في الحالات التي كانت ستؤدي فيها إلى عرض قيمة فارغة، ولكن تم ضبط initialKey غير فارغ. (Ic9542، b/230391606)

المساهمة الخارجية

  • تم تعديل واجهة برمجة التطبيقات :compose:ui:ui-test api (updateApi) بسبب نقل test-coroutines-lib (I3366d)

الإصدار 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 هي الآن دائمًا false مقابل LoadType.REFRESH لكل من PagingSource وRemoteMediator
    • ينتظر LoadStates من Paging الآن قيمًا صالحة من كلّ من PagingSource وRemoteMediator قبل إرسالها إلى قنوات الإصدار اللاحق. ستبدأ الآن الإصدارات الجديدة من PagingData دائمًا بشكل صحيح برمز Loading لحالة إعادة التحميل بدلاً من إعادة الضبط إلى NotLoading بشكل غير صحيح في بعض الحالات.
    • لم يعُد ".loadStateFlow" و".addLoadStateListener" في واجهات برمجة تطبيقات المقدّمين يرسلان بشكلٍ زائد CombinedLoadStates أوليًا يكون فيه دائمًا وضع الوسيط مضبوطًا على null.
  • يتم الآن إلغاء الإصدارات السابقة بشكلٍ سريع عند إلغاء صلاحيتها أو عند إصدار إصدارات جديدة. من المفترض ألّا يكون استخدام .collectLatest على Flow<PagingData> مطلوبًا بعد الآن، ولكن يُنصح به.
  • تمت إضافة PagingSource.LoadResult.Invalid كنوع جديد للقيمة المعروضة من PagingSource.load، ما يؤدي إلى تجاهل Paging لأي طلبات تحميل في انتظار المراجعة أو المستقبلية إلى هذا 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 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تؤدي إلى إسقاط العديد من عمليات الوصول السريع إلى العناصر لمراجعتها في prefetchDistance، ما يؤدي إلى توقُّف تحميل الصفحات. ويشكّل ذلك مشكلة بشكل خاص عند عرض العديد من العناصر في آنٍ واحد بترتيب يمنح الأولوية للتحميل بعكس اتجاه التمرير الذي يستخدمه المستخدم. يتم الآن تخزين عمليات الوصول إلى هذه العناصر مؤقتًا وتحديد أولوياتها بشكل متزامن لمنع إيقافها. (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. في السابق، كان من الممكن أن يكون endOfPaginationReached‏ true لـ RemoteMediator‏ REFRESH، ولكن ليس لـ PagingSource. تم دمج هذا السلوك الآن لعرض false دائمًا، لأنّه لا معنى أبدًا لأن يكون الإجراء REFRESH نهائيًا، وهو الآن مستندًا كجزء من عقد واجهة برمجة التطبيقات في LoadStates. عند تحديد ما إذا كان ينبغي إنهاء تقسيم الصفحات، يجب دائمًا إجراء ذلك مع مراعاة إما اتجاهَي APPEND أو PREPEND. (I047b6)
  • تنتظر LoadStates من Paging الآن قيمًا صالحة من كلٍّ من PagingSource وRemoteMediator قبل بث البيانات إلى قنوات الإصدار اللاحق بين عمليات الإنشاء. يمنع ذلك الأجيال الجديدة من PagingData من إرسال ‎"NotLoading" في CombinedLoadStates.source.refresh إذا كان قد تم تحميله من قبل. ستبدأ الأجيال الجديدة من PagingData الآن دائمًا بشكلٍ صحيح بحالة Loading لحالة التحديث بدلاً من إعادة الضبط أولاً على NotLoading بشكلٍ غير صحيح في بعض الحالات.

    يتم الآن إلغاء الإصدارات السابقة بشكلٍ سريع عند إلغاء الصلاحية / الإصدارات الجديدة. من المفترض ألّا يكون من المطلوب بعد الآن استخدام ‎ .collectLatest في Flow<PagingData>، إلا أنّه لا يزال يُنصح بشدة بإجراء ذلك. (I0b2b5 وb/177351336 وb/195028524)

  • .loadStateFlow و.addLoadStateListener في واجهات برمجة التطبيقات الخاصة بعرض الإعلانات لم تعُد تُرسِل بشكلٍ متكرّر CombinedLoadStates أوليًا يتم فيه دائمًا ضبط حالات الوسيط على null وحالات المصدر على NotLoading(endOfPaginationReached = false). ويعني هذا أنّ:

    1. ستتم تعبئة حالات التوسّط دائمًا في حال استخدام RemoteMediator.
    2. لن يؤدي تسجيل مستمع loadState جديد أو جامع جديد في .loadStateFlow إلى بث القيمة الحالية على الفور إذا لم يتلقَّ CombinedLoadStates حقيقيًا من PagingData. يمكن أن يحدث ذلك إذا بدأ أحد أدوات جمع البيانات أو أدوات مراقبة الأحداث في جمع البيانات قبل إرسال PagingData. (I1a748)

الإصدار 3.1.0-alpha03

21 تموز (يوليو) 2021

تم إصدار androidx.paging:paging-*:3.1.0-alpha03. يحتوي الإصدار 3.1.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تتم إضافة نوع إرجاع LoadResult ثالث LoadResult.Invalid إلى PagingSource. عندما يعرض PagingSource.load قيمة LoadResult.Invalid، ستتجاهل ميزة الفهرسة البيانات المحمَّلة و ستبطل PagingSource. تم تصميم نوع الإرجاع هذا لمعالجة البيانات التي يُحتمل أن تكون غير صالحة أو قديمة والتي يمكن إرجاعها من قاعدة البيانات أو الشبكة.

    على سبيل المثال، إذا تمّت الكتابة في قاعدة البيانات الأساسية ولكن لم يتمّ إبطال PagingSource في الوقت المناسب، قد يعرض نتائج غير متّسقة إذا كان تنفيذه يعتمد على عدم قابلية تغيير مجموعة البيانات الأساسية التي يتمّ تحميلها منها (مثل LIMIT تنفيذات قاعدة بيانات بنمط OFFSET). في هذا السيناريو، يُنصح بالتحقق من عدم صلاحية البيانات بعد التحميل ومحاولة عرض LoadResult.Invalid، ما يؤدي إلى تجاهل Paging لأي طلبات تحميل في انتظار المراجعة أو المستقبلية إلى PagingSource هذا ومحاولة إبطالها.

    يتوافق نوع الإرجاع هذا أيضًا مع Paging2 API التي تستخدِم LivePagedList أو RxPagedList. عند استخدام PagingSource مع واجهتَي برمجة التطبيقات PagedList من Paging2، يتم فصل PagedList على الفور، ويؤدي ذلك إلى إيقاف المزيد من محاولات تحميل البيانات في PagedList هذه، ويؤدي أيضًا إلى إبطال PagingSource.

    LoadResult هي فئة مختومة، ما يعني أنّ هذا تغيير غير متوافق مع المصدر، وبالتالي فإنّ حالات الاستخدام التي تستخدم مباشرةً نتائج PagingSource.load ستضطر إلى التعامل مع LoadResult.Invalid في وقت الترجمة. على سبيل المثال، على مستخدمي Kotlin الذين يستخدمون علامة دالة exhaustive-when للتحقّق من نوع الإرجاع إضافة عملية تحقّق للنوع Invalid. (Id6bd3، b/191806126، b/192013267)

إصلاح الأخطاء

  • يتم الآن تشغيل وظائف الاستدعاء المتعلّقة بإبطال الصلاحية التي تمت إضافتها من خلال ‎ PagingSource.registerInvalidatedCallback أو ‎ DataSource.addInvalidatedCallback تلقائيًا إذا تم تسجيلها في PagingSource / DataSource كانا فاقدي الصلاحية من قبل. يحلّ هذا الإجراء مشكلة تعارض العمليات التي أدّت إلى إسقاط Paging لإشارة البطلَان وتوقّفه عند تقديم مصدر كان غير صالح أثناء التحميل الأوّلي. بالإضافة إلى ذلك، تتم الآن إزالة طلبات إعادة التحميل بشكل صحيح بعد تشغيلها، لأنّه مضمّن أن يتمّ استدعاؤها مرة واحدة بحدّ أقصى. (I27e69)
  • إرسال القيمة الأولية للعنصر النائب (InitialPagedList) من بث PagedList تم إنشاؤه حديثًا، على سبيل المثال: لن تُمحِي فئة LivePagedListBuilder أو RxPagedListBuilder البيانات التي تم تحميلها سابقًا.

الإصدار 3.1.0-alpha02

1 تموز (يوليو) 2021

تم إصدار androidx.paging:paging-*:3.1.0-alpha02. يحتوي الإصدار 3.1.0-alpha02 على هذه المراجعات.

الميزات الجديدة

  • تمت إضافة واجهات برمجة التطبيقات onPagesPresented listener وflow presenter API التي يتم تفعيلها مباشرةً بعد تعديل الصفحات المعروضة في واجهة المستخدم.

    بما أنّ هذه التعديلات متزامنة مع واجهة المستخدم، يمكنك استدعاء طرق المُحوِّل مثل .snapshot و.getItemCount لفحص الحالة بعد تطبيق التعديل. يُرجى العلم أنّه تم ترك دالة ‎ .snapshot()‎ ليتم استدعاؤها بشكل صريح لأنّه قد يكون من الصعب تنفيذها عند كل تحديث.

    يمكن أن تحدث تعديلات على الصفحة في السيناريوهات التالية:

    • اكتمال التحميل الأولي لجيل جديد من PagingData، بغض النظر عمّا إذا كان الجيل الجديد يحتوي على أي تغييرات في العناصر المعروضة، أي سيؤدي الجيل الجديد الذي يُكمل التحميل الأولي بدون أي تعديلات لأنّ القائمة متطابقة تمامًا إلى تشغيل هذا المرجع.
    • يتم إدراج صفحة، حتى إذا كانت الصفحة المُدرَجة لا تحتوي على عناصر جديدة.
    • يتم إسقاط صفحة، حتى إذا كانت الصفحة التي تم إسقاطها فارغة (I272c9، b/189999634)

إصلاح الأخطاء

  • لن يؤدي الوصول إلى PagedList.dataSource من القيمة الأولية التي تم إنشاؤها بواسطة LivePagedList أو RxPagedList إلى طرح خطأ 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).

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تؤدي إلى إرسال Paging أحيانًا إلى RecyclerView أحداث اختلاف بدون إجراء ، ما قد يؤدي إلى بدء بعض المستمعين مبكرًا. (Ic507f، b/182510751)

المساهمة الخارجية

  • تمت إضافة واجهات برمجة تطبيقات متوافقة مع PagedList المتوقّفة نهائيًا إلى العنصر rxjava3 (Id1ce2، b/182497591)

الإصدار 1.0.0 من Paging Compose

الإصدار 1.0.0-alpha20

24 أيار (مايو) 2023

تم إصدار androidx.paging:paging-compose:1.0.0-alpha20. يحتوي الإصدار 1.0.0-alpha20 على هذه المراجعات.

الميزات الجديدة

  • تتيح ميزة "إنشاء صفحات" الآن معاينة قائمة بالبيانات المزيّفة من خلال إنشاء PagingData.from(fakeData) ولفّ هذا PagingData في MutableStateFlow (على سبيل المثال، MutableStateFlow(PagingData.from(listOf(1, 2, 3)))). باستخدام هذه البيانات كمدخلات في @Preview، ستوفّر المكالمات إلى collectAsLazyPagingItems() LazyPagingItems قابلة للمعاينة. (I8a78d، b/194544557)

إصلاح الأخطاء

  • ستتوفّر الآن البيانات المخزّنة مؤقتًا من pager.flow.cachedIn التي تم جمعها في LazyPagingItems على الفور بعد استعادة الحالة بدون الحاجة إلى جمع غير متزامن. وهذا يعني أنّ البيانات المخزّنة مؤقتًا ستكون جاهزة للعرض فور الإنشاء الأولي بعد استعادة الحالة. (I97a60، b/177245496)

الإصدار 1.0.0-alpha19

3 أيار (مايو) 2023

تم إصدار androidx.paging:paging-compose:1.0.0-alpha19. يحتوي الإصدار 1.0.0-alpha19 على هذه المراجعات.

إتاحة جميع التنسيقات المُعدّة للتحميل عند الطلب

في السابق، كان Paging Compose يقدّم إضافات مخصّصة items وitemsIndexed على LazyListScope، ما يعني أنّه لا يمكنك استخدام Paging Compose مع تنسيقات أخرى مخصّصة للعرض بدون تحميل المحتوى، مثل LazyVerticalGrid أو HorizontalPager أو مكوّنات مخصّصة أخرى للعرض بدون تحميل المحتوى تقدّمها مكتبتا Wear وTV. ومعالجة هذه المشكلة هي الهدف الأساسي من هذا الإصدار.

لدعم المزيد من التنسيقات المتغيّرة، كان علينا إنشاء واجهات برمجة تطبيقات في طبقة مختلفة. بدلاً من توفير واجهة برمجة تطبيقات items مخصّصة لكل تنسيق متغيّر، يوفّر Paging Compose الآن طرقًا لإضافات ذات مستوى أقل قليلاً على LazyPagingItems في itemKey وitemContentType. تركّز واجهات برمجة التطبيقات هذه على مساعدتك في تنفيذ مَعلمتَي 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 أطول ببضع سطور، رأينا أنّ الاتساق في جميع التنسيقات المُهمّلة هو عامل مهم لأولئك الذين يستخدمون ميزة "إنشاء صفحات" من الآن فصاعدًا. لهذا السبب، تمّ إيقاف الإضافات الحالية لـ LazyListScope نهائيًا. (I0c459، I92c8f، b/276989796)

تغييرات واجهة برمجة التطبيقات

  • لتسهيل نقل البيانات إلى واجهات برمجة التطبيقات الجديدة، تتيح الآن وظيفتا التوسيع items وitemsIndexed في LazyListScope استخدام مَعلمة 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 على هذه المراجعات.

الميزات الجديدة

  • إتاحة استخدام CoroutineContext مخصّص عند الاتصال بـ collectLazyPagingItems (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))

إصلاح الأخطاء

  • تم إصلاح خطأ عدم توفّر PagingDataDiffer عند استخدام paging-compose:1.0.0-alpha15 مع paging-common:3.1.1 أو إصدار أقدم.(b/235256201،b/239868768)

الإصدار 1.0.0-alpha15

1 حزيران (يونيو) 2022

تم إصدار androidx.paging:paging-compose:1.0.0-alpha15. يحتوي الإصدار 1.0.0-alpha15 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة عنصرَي إنشاء لـ PagingDataAdapter وAsyncPagingDataDiffer يقبلان CoroutineContext بدلاً من CoroutineDispatcher. (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) اللذان كانا يُستخدَمان لربط Paging بـ 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 على هذه المراجعات.

إصلاح الأخطاء

  • يمكن الآن مراقبة itemCount وitem getter في LazyPagingItems، ما يتيح استخدامها مع LazyVerticalGrid أيضًا (Ie2446 وb/171872064 وb/168285687).

توافق تطبيق Compose

  • لا يتوافق androidx.paging:paging-compose:1.0.0-alpha09 إلا مع الإصدار 1.0.0-beta07 من تطبيق "الإنشاء" والإصدارات الأحدث.

الإصدار 1.0.0-alpha08

24 شباط (فبراير) 2021

تم إصدار androidx.paging:paging-compose:1.0.0-alpha08. يحتوي الإصدار 1.0.0-alpha08 على هذه المراجعات.

تم تعديله للدمج مع الإصدار 1.0.0-beta01 من Compose.

الإصدار 1.0.0-alpha07

10 شباط (فبراير) 2021

تم إصدار androidx.paging:paging-compose:1.0.0-alpha07. يحتوي الإصدار 1.0.0-alpha07 على هذه المراجعات.

تم تعديلها للدمج مع الإصدار التجريبي 12 من Compose.

الإصدار 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 لإجراء عملية النقل من Loading إلى NotLoading فقط بعد أن تصبح حالة تحميل الوسيط والمصدر NotLoading لضمان تطبيق التعديل عن بُعد. (I65619)

الإصدار 1.0.0-alpha03

2 كانون الأول (ديسمبر) 2020

تم إصدار androidx.paging:paging-compose:1.0.0-alpha03. يحتوي الإصدار 1.0.0-alpha03 على هذه المراجعات.

  • تم تعديلها لتتوافق مع الإصدار 1.0.0-alpha08 من Compose.

الإصدار 1.0.0-alpha02

11 تشرين الثاني (نوفمبر) 2020

تم إصدار androidx.paging:paging-compose:1.0.0-alpha02. يحتوي الإصدار 1.0.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة طرق .peek() و.snapshot() و.retry() و.refresh() إلى LazyPagingItem التي تعرض الوظيفة نفسها المتاحة في 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 على هذه المراجعات.

إصلاح الأخطاء

  • لن يؤدي الوصول إلى PagedList.dataSource من القيمة الأولية التي تم إنشاؤها بواسطة LivePagedList أو RxPagedList إلى طرح استثناء 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 على هذه المراجعات.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تؤدي إلى إرسال Paging أحيانًا إلى RecyclerView أحداث اختلاف بدون إجراء، ما قد يؤدي إلى بدء بعض المستمعين مبكرًا. (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 المختلفة (مسار التوافق القديم) تستدعي DataSource.Factory.create() بشكل غير صحيح بشكل متزامن في سلسلة المهام الرئيسية عند استدعاء .build(). (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.

الإصدار 3.0.0-beta01

10 شباط (فبراير) 2021

تم إصدار androidx.paging:paging-*:3.0.0-beta01. يحتوي الإصدار 3.0.0-beta01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تعرض الآن حِزم Rx2 وRx3 التعليق التوضيحي التجريبي الذي تعتمد عليه. إذا كنت تستخدم حِزم Rx compat في paging-rxjava2 أو paging-rxjava3، عليك الآن إضافة تعليقات توضيحية إلى عمليات الاستخدام باستخدام @OptIn(ExperimentalCoroutinesApi::class) (Ib1f9d).

إصلاح الأخطاء

  • تم إصلاح الخطأ IndexOutOfBoundsException: Inconsistency detected الذي كان يظهر أحيانًا عند استخدام واجهات برمجة تطبيقات الإصدار 2 من DataSource من خلال مسارات التوافق
  • تم الآن إطلاق isInvalid بشكل صحيح على fetchDispatcher بدلاً من الخيط الرئيسي عند استدعاء DataSource أثناء إعداد DataSource عند استخدامه عبر مسارات التوافق. يعالج هذا الخطأ IllegalStateException بسبب الوصول إلى قاعدة البيانات في سلسلة المحادثات الرئيسية عند استخدام عملية تنفيذ PagingSource في Room.

الإصدار 3.0.0-alpha13

27 كانون الثاني (يناير) 2021

تم إصدار androidx.paging:paging-*:3.0.0-alpha13. يحتوي الإصدار 3.0.0-alpha13 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • لم تعُد دالة PagingSource.getRefreshKey اختيارية لتنفيذها، بل أصبحت الآن دالة مجردة بدون تنفيذ تلقائي. يمكن للمستخدمين الذين ينتقلون إلى الإصدار الجديد مواصلة عرض التنفيذ التلقائي، الذي يعرض ببساطة null، ولكن يجب أن يكون getRefreshKey() مزوّدًا بتنفيذ حقيقي يعرض مفتاحًا استنادًا إلى موضع التمرير الحالي للمستخدم، ما يسمح لميزة "التنقّل في الصفحة" بمواصلة التحميل في منتصف مساحة العرض من خلال PagingState.anchorPosition إذا كان ذلك ممكنًا. (I4339a)
  • تم الآن منح "InvalidatingPagingSourceFactory" دور فئة نهائية (Ia3b0a).
  • السماح بضبط سلوك فاصل المحطة (العنوان / التذييل) باستخدام مَعلمة SeparatorType اختيارية إضافية الخياران هما:
    • FULLY_COMPLETE - السلوك الحالي: الانتظار إلى أن يُحدِّد كلّ من PagingSource و RemoteMediator أنّه تمّ الوصول إلى endOfPagination قبل إضافة فاصل نهائي. في حال عدم استخدام RemoteMediator، يتم تجاهل loadState عن بُعد. يكون هذا مفيدًا في المقام الأول إذا كنت تريد فقط عرض فاصل القسم عند تحميل القسم بالكامل، بما في ذلك الجلب من مصدر بعيد، مثل الشبكة.
    • SOURCE_COMPLETE - الانتظار فقط إلى أن يضع PagingSource علامة endOfPaginationReached حتى في حال استخدام RemoteMediator يتيح ذلك عرض الرؤوس والتذييلات بشكل متزامن مع عملية التحميل الأولية، ما يمنع المستخدمين من الحاجة إلى التمرير لعرض الفواصل النهائية. (Ibe993، b/174700218)

إصلاح الأخطاء

  • تم إصلاح تسرُّب ذاكرة نادر يحدث عندما يتم إبطال PagingSource قبل أن يبدأ PageFetcher في التحميل منه. (I9606b، b/174625633)

الإصدار 3.0.0-alpha12

13 كانون الثاني (يناير) 2021

تم إصدار androidx.paging:paging-*:3.0.0-alpha12. يحتوي الإصدار 3.0.0-alpha12 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • لم تعُد فئة InvalidatingPagingSourceFactory فئة مجردة، لأنّها لم تتضمّن أبدًا أي طرق مجردة. (I4a8c4)
  • تمت إضافة طريقة مُحمَّلة زائدة من ‎ .cachedIn() التي تقبل ViewModel بدلاً من Lifecycle أو CoroutineScope لمستخدمي Java. (I97d81، b/175332619)
  • السماح لمُرسِلي طلبات Java باستخدام عمليات تحويل PagingData بطريقة غير متزامنة، من خلال قبول Executor في مَعلمات عامل التحويل تمت الآن إزالة اللاحقة -Sync من جميع عوامل تحويل -Sync، وسيحتاج مستخدمو Kotlin Coroutine إلى إزالة الغموض من خلال استدعاء دالة الإضافة التي تقبل كتلة تعليق بدلاً من ذلك. تم نقل جميع عوامل تشغيل تحويل PagingData إلى الإضافات ضمن فئة PagingDataTransforms الثابتة. على مستخدمي Java استدعاؤها من خلال العناصر المساعدة الثابتة، مثل PagingDataTransforms.map(pagingData, transform) بالنسبة إلى مستخدمي Kotlin، يكون أسلوب الإنشاء هو نفسه ولكن عليك استيراد الدالة. (If6885، b/172895919)

إصلاح الأخطاء

  • تم إصلاح خطأ كان يؤدي إلى عدم استدعاء RemoteMediator.load() أثناء adapter.refresh() إذا سبق الوصول إلى نهاية تقسيم الصفحات.

الإصدار 3.0.0-alpha11

16 كانون الأول (ديسمبر) 2020

تم إصدار androidx.paging:paging-*:3.0.0-alpha11. يحتوي الإصدار 3.0.0-alpha11 على هذه المراجعات.

الميزات الجديدة

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

تغييرات واجهة برمجة التطبيقات

  • أصبحت واجهة برمجة التطبيقات PagingSource.getRefreshKey() مستقرة الآن (I22f6f، b/173530980).
  • لم تعُد PagingSource.invalidate دالة مفتوحة. إذا كنت بحاجة إلى تلقّي إشعار عند حدوث إلغاء الصلاحية، ننصحك باستدعاء الإجراء registerInvalidatedCallback بدلاً من إلغاء invalidate. (I628d9، b/173029013، b/137971356)
  • يحتوي Pager الآن على مُنشئ تجريبي واحد إلى جانب المُنشئين العاديين، بدلاً من تسرُّب واجهات برمجة التطبيقات التجريبية إلى واجهة برمجة التطبيقات العامة غير التجريبية من خلال التعليق التوضيحي للموافقة. (I9dc61، b/174531520)
  • تم تعديل سمات الراحة، CombinedLoadStates.refresh وCombinedLoadStates.prepend CombinedLoadStates.append لإجراء عملية النقل من Loading إلى NotLoading فقط بعد أن تصبح حالة تحميل الوسيط والمصدر NotLoading لضمان تطبيق التعديل عن بُعد. (I65619)
  • تمت إزالة LoadParams.pageSize (سبق أن تم إيقافه نهائيًا). ننصحك باستخدام LoadParams.loadSize في PagingSource.

    يكون LoadParams.loadSize دائمًا مساويًا لـ PagingConfig.pageSize باستثناء طلب التحميل الأولي حيث يكون مساويًا ل PagingConfig.initialLoadSize.

    إذا كنت تختبر DataSource في Paging2 بدون استخدام Pager أو PagedList، قد لا يتطابق pageSize مع PagingConfig.pageSize إذا كنت أيضًا تضبط initialLoadSize. إذا كان ذلك مهمًا لاختباراتك، جرِّب استخدام Pager/PagedList بدلاً من ذلك، ما سيؤدي إلى ضبط PageSize الصحيح داخليًا لطرق تحميل DataSource. (I98ac7، b/149157296)

إصلاح الأخطاء

  • تم إصلاح مشكلة تعطُّل بسبب IllegalStateException عند استخدام الفواصل مع ضبط PagingConfig.maxSize. (I0ed33، b/174787528)
  • تم إصلاح خطأ كان يؤدي إلى عدم تعديل حالة التحميل لـ PREPEND / APPEND إلى NotLoading(endOfPaginationReached = true) على الفور بعد التحميل الأولي إذا تم ضبط RemoteMediator (I8cf5a).
  • تم إصلاح خلل كان يؤدي إلى عرض القائمة السابقة (غير المحدّثة) ضمن تعديلات ListUpdateCallback من خلال واجهات برمجة التطبيقات من جهة المُقدّم، مثل ‎.snapshot() و‎.peek() وما إلى ذلك.
  • تم إصلاح خطأ كان يمنع عوامل تشغيل الفواصل من إضافة رؤوس أو تذييلات عند استخدامها مع RemoteMediator.
  • تم إصلاح خطأ كان يؤدي إلى توقُّف RemoteMediator في حالة Loading عند تعديل LoadState إلى NotLoading
  • تم إصلاح خطأ كان يؤدي إلى أن تؤدي واجهة برمجة التطبيقات .asPagingSourceFactory() المتوافقة مع Paging2.0 إلى إعداد DataSource الاحتياطية في CoroutineDispatcher غير الصحيح. يحلّ هذا الإجراء حالات الأعطال وحالات ANR المحتمَلة، خاصةً عند استخدام الإصدار الحالي من 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)

إصلاح الأخطاء

  • يتم الآن نشر حدث endOfPaginationReached لـ RemoteMediator REFRESH بشكلٍ صحيح إلى تعديلات LoadState ويمنع بدء APPEND و PREPEND عن بُعد. (I94a3f، b/155290248)
  • لن يؤدي عرض قائمة فارغة بسبب صفحة أولية فارغة أو الفلترة المكثّفة إلى منع ميزة "الفهرسة" من بدء عمليات تحميل PREPEND أو APPEND. (I3e702، b/168169730)
  • تم إصلاح مشكلة عدم استدعاء getRefreshKey في الإصدارات اللاحقة من PagingSource عند حدوث عمليات إبطال بشكلٍ سريع. (I45460، b/170027530)

المساهمة الخارجية

  • تمت إضافة فئة مجردة جديدة InvalidatingPagingSourceFactory مع واجهة برمجة تطبيقات .invalidate() تعيد توجيه الإبطال إلى جميع PagingSources التي تنشئها. شكرًا @claraf3. (Ie71fc، b/160716447)

المشاكل المعروفة

  • قد لا تظهر العناوين والتذييلات من عملية التحويل ‎.insertSeparators() على الفور عند استخدام RemoteMediator b/172254056.
  • يمكن أن يؤدي استخدام RemoteMediator إلى تعطُّل LoadState عن بُعد في حال اكتمال عملية الإبطال وPagingSource.load(LoadParams.Refresh(...)) قبل أن يعرض RemoteMediator.load() القيمة b/173717820.

الإصدار 3.0.0-alpha09

11 تشرين الثاني (نوفمبر) 2020

تم إصدار androidx.paging:paging-*:3.0.0-alpha09. يحتوي الإصدار 3.0.0-alpha09 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • أوقِف نهائيًا استخدام الطريقتَين dataRefreshFlow / Listener باستخدام عبارة replaceWith. (I6e2dd)

إصلاح الأخطاء

  • إصلاح لخطأ IllegalArgumentException الذي يتم طرحه عند استخدام الفواصل مع RemoteMediator وبدء عملية إلغاء صلاحية أثناء استمرار تحميل البيانات عن بُعد الذي سيعرض endOfPagination (I3a260)

الإصدار 3.0.0-alpha08

28 تشرين الأول (أكتوبر) 2020

تم إصدار androidx.paging:paging-*:3.0.0-alpha08. يحتوي الإصدار 3.0.0-alpha08 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تم دمج الصيغ Kotlin / Java من DataSource.InvalidatedCallback من خلال تفعيل عمليات التحويل باستخدام أسلوب SAM في Kotlin من خلال واجهة الوظائف (متوفّرة في Kotlin 1.4). يعالج هذا الإصلاح أيضًا خطأً كان يؤدي إلى عدم استدعاء مثيل kotlin من وظائف الاستدعاء التي تؤدي إلى إلغاء صلاحية القيمة بعد تحويله بواسطة .map أو .mapByPage. (I1f244، b/165313046)

إصلاح الأخطاء

  • تم تحسين تفاعل Paging مع ViewPager بشكل كبير. وعلى وجه التحديد، لن تلغي ميزة "الفهرسة" طلب RemoteMediator#load بسبب إلغاء صلاحية الصفحة. ولن يُرسِل أيضًا طلب تحميل لإضافة/إدراج البيانات، إذا كان مطلوبًا إجراء إعادة تحميل، إلى أن يكتمل طلب إعادة التحميل بنجاح. (I6390b، b/162252536)
  • تم تفعيل فحص lint لواجهة برمجة التطبيقات لـ MissingGetterMatchingBuilder في androidx (I4bbea، b/138602561)
  • تم إصلاح خطأ كان يؤدي إلى تعطُّل .withLoadState* ConcatAdapter مساعِدين بسبب إرسال إشعار إلى RecyclerView من سلسلة مهام الخلفية (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)

إصلاح الأخطاء

  • تم إصلاح استثناء IndexOutOfBounds الذي تم طرحه في RemoteMediator بسبب شرط السباق. (I00b7f، b/165821814)
  • تم إصلاح مشكلة تعارض في عملية التحويل من DataSource إلى PagingSource، ما قد يؤدي إلى تجاهل PagingSource الناتج لإشارات الإبطال الواردة من DataSource.
  • تم إصلاح مشكلة في منطق جلب الصفحات التي كانت تؤدي أحيانًا إلى تعذُّر رصد أجيال جديدة من PagingSource إلى أن يتم استدعاء PagingDataAdapter.refresh()
  • تم إصلاح مشكلة كانت تؤدي أحيانًا إلى فقدان موضع التمرير عند استخدام DataSource تم تحويله إلى PagingSource (مثل المصدر الذي تم إنشاؤه بواسطة Room)، مع RemoteMediator

المساهمة الخارجية

  • نشكر @simonschiller على إضافة عوامل تحويل التحويل غير المتزامن المستندة إلى RxJava2 وRxJava3 وGuava لـ PagingData.

الإصدار 3.0.0-alpha06

2 أيلول (سبتمبر) 2020

تم إصدار androidx.paging:paging-*:3.0.0-alpha06. يحتوي الإصدار 3.0.0-alpha06 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • UnsupportedOperationException مع ظهور رسائل أكثر وضوحًا حولعدم توفّر أرقام تعريف ثابتة، يتم الآن طرحها عند استدعاء PagingDataAdapter.setHasStableIds. (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 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة peek() API إلى AsyncPagingDataDiffer و PagingDataAdapter للسماح بالوصول إلى البيانات المعروضة بدون بدء عمليات تحميل للصفحات. (I38898، b/159104197)
  • تمت إضافة واجهة برمجة تطبيقات snapshot() إلى PagingDataAdapter و AsyncPagingDataDiffer للسماح باسترداد العناصر المعروضة بدون بدء جلب الصفحة. (I566b6، b/159104197)
  • تمت إضافة PagingData.from(List<T>) لإنشاء مثيل للسماح بعرض قوائم ثابتة، والتي يمكن دمجها مع تدفق PagingData العام لعرض قوائم ثابتة في حالات معيّنة، مثل قبل اكتمال REFRESH الأولي أو لاختبار عمليات التحويل ببساطة. (Id134d)
  • إيقاف واجهتَي برمجة التطبيقات dataRefresh Flow / Listener API نهائيًا لأنّهما كانتا مقصودًا منهما عرض حالة العناصر المعروضة عند REFRESH، ولكن مع التحسينات التي تم إجراؤها على توقيت استدعاء loadState Flow / Listener وproperty itemCount، أصبحتا زائدتين عن الحاجة (Ia19f3)
  • تمت إضافة وحدات تغليف متوافقة مع RxJava3 لإصدارَي PagingSource وRemoteMediator (I49ef3 وb/161480176)

إصلاح الأخطاء

  • PositionalDataSource تم تحويله إلى PagingSource من خلال toPagingSourceFactory المساعد، بما في ذلك PagingSource الذي تم إنشاؤه بواسطة Room يضعون الآن علامة بشكل صحيح للسماح بالانتقال. (I3e84c، b/162161201)
  • تم إصلاح خطأ كان يؤدي فيه استخدام الصيغة المتزامنة من submitData إلى حدوث تداخل في بعض الأحيان يؤدي إلى حدوث ClosedSendChannelException (I4d702، b/160192222).

المساهمة الخارجية

  • نشكر "زاك سفيرز" على إضافة وحدات التفاف متوافقة مع RxJava3 نيابةً عن Slack. (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)
  • تم وضع علامة @JvmSynthetic (I56ae5) على واجهات برمجة التطبيقات المكرّرة التي تم إنشاؤها لتسهيل استخدام لغة Kotlin.
  • تمت إضافة عمليات تحميل زائدة لإنشاء LoadResult.Page التي تضبط itemsBefore وitemsAfter تلقائيًا على COUNT_UNDEFINED (I47849)
  • تمّت إتاحة استخدام طرق تعليق opeators PagingData الحالية وتقديم opeators جديدة غير معلّقة mapSync وflatMapSync وfilterSync لمستخدمي Java. تم نقل methods الحالية للتحويل إلى دوال الإضافة حتى يحتاج مستخدمو Kotlin الآن إلى استيرادها. (I34239، b/159983232)

إصلاح الأخطاء

  • ستعرض الآن مصادر الفهرسة في Room (وPositionalDataSource) فاصلًا أوليًا كجزء من الصفحة الأولى، لكي لا يحتاج المستخدم إلى الانتقال للأسفل أو للأعلى لعرضه. (I6f747، b/160257628)
  • عمليات الوصول إلى العناصر في العناصر النائبة تؤدي الآن بشكل صحيح إلى تحميل PagingSource إلى أن يتم عرض صفحة تستوفي الفهرس المطلوب بعد تحويلها باستخدام PagingData.filter()‎ (I95625، b/158763195)
  • تم إصلاح خطأ كان يؤدي أحيانًا إلى منع إعادة المحاولة في PagingDataAdapter.retry() بعد التمرير للأسفل بعد أن يعرض PagingSource خطأ. (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).
  • تمت إضافة واجهات برمجة التطبيقات RxJava وGuava لـ RemoteMediator، وهما RxRemoteMediator وListenableFutureRemoteMediator.
  • تمت إضافة أدوات مساعدة إلى PagingState للوصول إلى العناصر الشائعة، مثل isEmpty() وfirstItemOrNull() (I3b5b6 وb/158892717).

إصلاح الأخطاء

  • يتحقّق Pager الآن من إعادة استخدام PagingSource في المصنع، لمنع إعادة استخدام PagingSources غير الصالحة عن طريق الخطأ، ما أدّى إلى ظهور خطأ غير واضح (I99809، b/158486430)
  • لم تعُد حالات تعذُّر إعادة تحميل RemoteMediator تمنع تحميل PagingSource (I38b1b، b/158892717)
  • لم يعُد الإصدار غير المعلّق من submitData يتسبب في حدوث عطل بسبب عملية جمع متزامنة في PagingData متعددة عند استدعائه بعد الإصدار المعلّق من submitData. (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

المشاكل المعروفة

  • لا تتوفّر مستندات javadocs الخاصة بإصدار Paging 3 حتى الآن. في الوقت الحالي، يُرجى استخدام الأدلة المرتبطة أعلاه أو مستندات 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 من ميزة "التنقّل في الصفحة" بشكل غير صحيح من فرع تم ضبط إعداداته بشكل خاطئ، ما أدّى إلى عرض واجهات برمجة تطبيقات ووظائف تم تنفيذها جزئيًا وسيتم طرحها في إصدار مستقبلي.

  • يتضمّن الإصدار 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

تم طرح الإصدار 2.1.0 من صفحة المنتج بدون أي تغييرات عن الإصدار 2.1.0-rc01.

الإصدار 2.1.0-rc01

6 كانون الأول (ديسمبر) 2018

تم طرح الإصدار 2.1.0-rc01 من صفحة المنتج بدون أي تغييرات عن الإصدار 2.1.0-beta01.

الإصدار 2.1.0-beta01

1 تشرين الثاني (نوفمبر) 2018

تم طرح الإصدار 2.1.0-beta01 من صفحة المنتج بدون أي تغييرات من 2.1.0-alpha01.

الإصدار 2.1.0-alpha01

12 تشرين الأول (أكتوبر) 2018

تتضمّن ميزة الفهرسة 2.1.0-alpha01 إضافةً رئيسيتين، وهما إسقاط الصفحة ومكتبات إضافات KTX لكل عنصر، بالإضافة إلى العديد من التغييرات الأخرى في واجهة برمجة التطبيقات وإصلاحات الأخطاء.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة PagedList.Config.Builder.setMaxSize() لتقييد عدد العناصر المحمَّلة في الذاكرة.
  • تمت إضافة androidx.paging.Config() كبديل PagedList.Config.Builder في Kotlin
  • تمت إضافة androidx.paging.PagedList() كبديل PagedList.Builder في Kotlin
  • تمت إضافة DataSourceFactory.toLiveData() كبديل LivePagedListBuilder في Kotlin
  • تمت إضافة DataSourceFactory.toObservable() وtoFlowable() كبديلَين RxPagedListBuilder في Kotlin
  • تمت إضافة AsyncPagedListDiffer.addPagedListListener() للاستماع إلى وقت تبديل PagedList. 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

تم إصدار الإصدار 2.0.0 من ميزة "الفهرسة" مع تصحيح خطأ واحد.

إصلاح الأخطاء

  • تم إصلاح عطل كان يحدث عند الانتقال سريعًا جدًا باستخدام PositionalDataSource والعناصر النائبة b/114635383.

الإصدار 2.0.0-beta01

2 تموز (يوليو) 2018

إصلاح الأخطاء

  • تم إصلاح مشكلة اختفاء المحتوى في بعض حالات الإضافة (العناصر النائبة غير مفعّلة، وPositionalDataSource) b/80149146
  • (تم إصداره سابقًا في 1.0.1) تم إصلاح الأعطال التي كانت تؤدي إلى تعذُّر إرسال PagedListAdapter وAsyncPagedListDiffer إشارات أحداث النقل. b/110711937

التبعيات التي تم استخدامها قبل AndroidX

بالنسبة إلى إصدارات Paging التي تسبق AndroidX والتي تلي ذلك، يجب تضمين التبعيات التالية:

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 لضمان الثبات. تم أيضًا إصدار 1.0.1 لصفحة RxJava2، وهو مطابق لـ 1.0.0-rc1.

إصلاح الأخطاء

  • تم إصلاح الأعطال التي كانت تؤدي إلى تعذُّر إرسال PagedListAdapter وAsyncPagedListDiffer إشارات أحداث النقل. b/110711937

الإصدار 1.0.0 من RxJava2

الإصدار 1.0.0-rc1 من RxJava2

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) وسيتم إصدار إصدارات منفصلة مؤقتًا منها إلى أن تصبح مستقرة.

توفّر هذه المكتبة الجديدة بديلاً لـ RxJava2 في LivePagedListBuilder، وهي قادرة على إنشاء Observable وFlowable، مع استخدام Scheduler بدلاً من Executor:

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 تحميل PagedList الأولي على المشغِّل المحدّد، بدلاً من حزمة سلاسل مهام I/O في Arch Components.

  • تم إصلاح السلوك غير الصالح في عبوات DataSource الداخلية (التي تُستخدَم لتنفيذ DataSource.map، بالإضافة إلى تحميل PositionalDataSource غير المفعَّل العنصر النائب) b/77237534

الإصدار 1.0.0-alpha7

21 آذار (مارس) 2018

تم إصدار ميزة الفهرسة 1.0.0-alpha7 مع مراحل النشاط 1.1.1. بما أنّ الإصدار التجريبي من Paging alpha7 يعتمد على نقل فئة Function المذكورة أعلاه، عليك تعديل الاعتماد على lifecycle:runtime إلى android.arch.lifecycle:runtime:1.1.1.

من المخطّط أن يكون الإصدار alpha7 من ميزة "الفهرسة" هو الإصدار النهائي قبل طرح الإصدار التجريبي من هذه الميزة.

تغييرات واجهة برمجة التطبيقات

  • تحتوي كائنات 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، راجِع ما سبق.
  • تم إصلاح خلل كان يؤدي إلى عدم استدعاء BoundaryCallback.onItemAtEndLoaded لـ PositionalDataSource في حال تفعيل العناصر النائبة وإذا كان الحجم الإجمالي هو مضاعِف دقيق لحجم الصفحة.

الإصدار 1.0.0-alpha5

22 كانون الثاني (يناير) 2018

إصلاح الأخطاء

  • إصلاح تحميل الصفحة عند إيقاف العناصر النائبة b/70573345
  • تسجيل إضافي لتتبُّع خطأ IllegalArgumentException‏ b/70360195 (وإصلاح افتراضي من جهة Room)
  • يعالج نموذج الرمز البرمجي في Javadoc الأخطاء b/70411933 وb/71467637.