ترقيم الصفحات
يعرض هذا الجدول كل العناصر في مجموعة androidx.paging
.
العناصر | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
الترحيل-* | 3.3.2 | - | - | - |
إنشاء صفحات | 3.3.2 | - | - | - |
إعلان التبعيات
لإضافة تبعية إلى نظام الترحيل، يجب إضافة مستودع 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.2
7 أغسطس 2024
تم طرح androidx.paging:paging-*:3.3.2
. يحتوي الإصدار 3.3.2 على عمليات الالتزام هذه.
الميزات الجديدة
- تمت إضافة أهداف جديدة من Kotlin متعددة المنصات من قِبل
paging-common
وpaging-testing
: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
بدلاً من طلب واجهات برمجة تطبيقات التقسيم الداخلية أوAsyncPagingDataDiffer
فيpaging-runtime
. - تمت إضافة طريقتَي المساعدة
LoadStates
وCombinedLoadStates
الجديدتَين فيhasError
وisIdle
للتحقّق مما إذا كانتLoadStates
في حالة خطأ أوNotLoading
على التوالي. تمت أيضًا إضافة طريقة جديدة للإضافةawaitNotLoading()
Kotlin علىFlow<CombinedLoadStates>
للانتظار حتى يستقر التحميل على حالةNotLoading
أو خطأ. - ترسل
PagingData.empty()
الآن حالاتNotLoading
تلقائيًا ما لم يتم تمريرLoadStates
المخصّص إلى طريقة الإنشاء الخاصة بها. وينحد هذا الإجراء عن السلوك الحالي الذي لا يرسِلLoadStates
عند إرساله إلىPagingDataAdapter
أو يرسل حالات التحميل عند جمع البيانات على أنّهاLazyPagingItems
. عند جمع البيانات على أنّهاLazyPagingItems
، ستُعرض أيضًا قائمة فارغة فور إنشاء الحملة.
توافق Kotlin متعدد الأنظمة الأساسية
يتيح نظام الترحيل الآن شحن العناصر المتوافقة مع Kotlin Multiplatform، ويرجع الفضل في ذلك إلى حد كبير إلى العمل المنقول من مشروع نقل البيانات على أنظمة أساسية متعددة في CashApp.
- تم نقل جميع واجهات برمجة تطبيقات Paging 3 إلى
common
من قِبل "paging-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
بدون أي تغييرات في الصفحات 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
بدلاً من طلب واجهات برمجة تطبيقات التقسيم الداخلية أو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 متعدد الأنظمة الأساسية
يتيح نظام الترحيل الآن شحن العناصر المتوافقة مع Kotlin Multiplatform، ويرجع الفضل في ذلك إلى حد كبير إلى العمل المنقول من مشروع نقل البيانات على أنظمة أساسية متعددة في CashApp. وسيتيح لنا ذلك تجنُّب التباعد بين مستودعَين والحفاظ على توافقهما.
- تم نقل جميع واجهات برمجة تطبيقات Paging 3 إلى
common
من قِبل "paging-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 فقط.
التغييرات في واجهة برمجة التطبيقات
- لقد تم نهائيًا إيقاف واجهة أداة التسجيل المتاحة للجميع التي كانت مخصّصة للاستخدام الداخلي فقط (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 إلى ثبات واجهة برمجة التطبيقات، وتم دمجها مرة أخرى مع بقية عمليات النقل، حيث يتطابق إصدارها الآن مع جميع الأدوات الأخرى الخاصة بعملية النقل. تشمل التغييرات منذ 3.1.0 ما يلي:
- يتيح هذا الخيار معاينة قائمة بالبيانات المزيفة من خلال إنشاء
PagingData.from(fakeData)
والتفافPagingData
فيMutableStateFlow
(مثلMutableStateFlow(PagingData.from(listOf(1, 2, 3)))
). مرِّر هذا المسار إلى@Preview
عنصر قابل للإنشاء كمستلِم لـ "collectAsLazyPagingItems()
" لمعاينته. - ويتوافق مع جميع التنسيقات الكسولة، مثل
LazyVerticalGrid
وHorizontalPager
، بالإضافة إلى المكونات الكسولة المخصّصة من مكتبات Wear والتلفزيون. وقد تم تحقيق ذلك من خلال طريقتَي الإضافة "LazyPagingItems
" الجديدة ذات المستوى الأدنى "itemKey
" و"itemContentType
"، ما يساعدك في تنفيذ المَعلمتَينkey
وcontentType
على واجهات برمجة تطبيقاتitems
العادية المتوفّرة حاليًا فيLazyColumn
وLazyVerticalGrid
بالإضافة إلى ما يعادلها في واجهات برمجة التطبيقات مثلHorizontalPager
. - تم نهائيًا إيقاف
items(lazyPagingItems)
وitemsIndexed(lazyPagingItems)
اللذَين يدعمانLazyListScope
فقط.
- يتيح هذا الخيار معاينة قائمة بالبيانات المزيفة من خلال إنشاء
- عنصر
paging-testing
جديد يوفّر واجهات برمجة تطبيقات مصمّمة لتختبر كل طبقة من طبقات تطبيقك ودمجها مع ميزة "نقل الصفحات" بشكل منفصل. على سبيل المثال، يتضمن- فئة
TestPager
التي تسمح لك بالتحقّق من سلوك عملية تنفيذPagingSource
المخصّصة بشكل مستقل عن أداة النداء وواجهة المستخدم الحقيقية. asPagingSourceFactory
واجهات برمجة تطبيقات لتحويلFlow<List<Value>>
أوList<Value>
ثابت إلىPagingSourceFactory
يمكن تمريره إلى جهاز نداء في الاختبارات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
توفّر واجهة برمجة تطبيقات أكثر وضوحًا من السابقة () ->.PagingSource
إعلانات lambda. يمكن استخدام هذا المصنع لإنشاء مثيل لجهاز نداء.
الإصدار 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)
المتوقّفة نهائيًا من ميزة "إنشاء الصفحات". يمكنك الاطّلاع على ملاحظات الإصدار1.0.0-alpha20
لإنشاء الصفحات للحصول على مثال على واجهات برمجة التطبيقات البديلة. (I9626e)
الإصدار 3.2.0-alpha06
24 أيار (مايو) 2023
تم طرح androidx.paging:paging-*:3.2.0-alpha06
. يحتوي الإصدار 3.2.0-alpha06 على هذه عمليات التنفيذ.
الميزات الجديدة
- تمت إضافة واجهة
PagingSourceFactory
وظيفية جديدة توفّر واجهة برمجة تطبيقات أكثر وضوحًا من واجهة برمجة التطبيقات() -> PagingSource
الحالية. يمكن استخدام هذا المصنع لإنشاء مثيل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)
المساهمات الخارجية
- ونشكر Veyndan على مساهمته في الابتعاد عن نظام Android/JVM. (#525، #523، #520، #519، #507، #506، #505 #499، #497، #496، #493)
الإصدار 3.2.0-alpha04
8 شباط (فبراير) 2023
تم طرح androidx.paging:paging-*:3.2.0-alpha04
. يحتوي الإصدار 3.2.0-alpha04 على هذه عمليات التنفيذ.
اختبار الصفحات
- تحتوي عناصر "
paging-testing
" الآن على طريقةasPagingSourceFactory
لإنشاءpagingSourceFactory
منFlow<List<Value>>
ليتم توفيره إلى جهاز نداء. تمثّل كل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>
مباشر. تسمح لك دالة lambdaasSnapshot
بمحاكاة واجهة المستخدم الخاصة بتطبيقك من خلال واجهات برمجة التطبيقات، مثل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 وIb29b9 وIb29b9 وI2249f وI2249f.
التغييرات في واجهة برمجة التطبيقات
- تم وضع علامة على طلبات واجهة المستخدم إلى
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
. توفِّر هذه العناصر واجهات برمجة تطبيقات مصمّمة لتختبر كل طبقة من طبقات تطبيقك ودمجها مع نظام الترحيل بشكل منفصل.
على سبيل المثال، يشتمل هذا الإصدار الأول على فئة 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
من عملية الترحيل تنتظر الآن قيمًا صالحة من كل منPagingSource
وRemoteMediator
قبل إطلاقها. في بعض الحالات، ستبدأ الأجيال الجديدة منPagingData
دائمًا بشكل صحيح باستخدامLoading
لحالة إعادة التحميل بدلاً من إعادة الضبط علىNotLoading
بشكل غير صحيح.- لم يعد كل من
.loadStateFlow
و.addLoadStateListener
على واجهات برمجة تطبيقات العرض يرسلانCombinedLoadStates
أولية يتم ضبطها دائمًا علىnull
- دائمًا ما تكون قيمة العمود "
- يحدث إلغاء الأجيال السابقة الآن بشغف بسبب حالات الإبطال أو الأجيال الجديدة. لم يعُد من الضروري استخدام
.collectLatest
علىFlow<PagingData>
، إلا أنّنا لا نزال ننصح باستخدامها. - تمت إضافة
PagingSource.LoadResult.Invalid
كنوع إرجاع جديد منPagingSource.load
، ما يتسبب في تجاهل أي طلبات تحميل معلَّقة أو مستقبلية إلىPagingSource
هذه وإبطالها. تم تصميم نوع الإرجاع هذا للتعامل مع البيانات التي يُحتمل أن تكون غير صالحة أو قديمة والتي يمكن عرضها من قاعدة البيانات أو الشبكة. - تمت إضافة واجهتَي برمجة تطبيقات للمقدِّم
.onPagesPresented
و.addOnPagesUpdatedListener
، اللذَين تم تشغيلهما بشكلٍ متزامن عند عرض الصفحات في واجهة المستخدم. ويمكن أن يتم تعديل الصفحات في الحالات التالية:- يكتمل التحميل الأولي للإصدار الجديد من PagingData، بغض النظر عمّا إذا كان الإصدار الجديد يحتوي على أي تغييرات على العناصر المعروضة. بعبارة أخرى، بالنسبة إلى الجيل الجديد الذي يكتمل التحميل الأوّلي بدون أي تعديلات، لأنّ القائمة هي نفسها تمامًا سيستمر تشغيل عملية معاودة الاتصال هذه.
- يتم إدراج صفحة حتى إذا كانت الصفحة المدرَجة لا تحتوي على عناصر جديدة.
- يتم إسقاط الصفحة، حتى إذا كانت الصفحة التي تم إفلاتها فارغة.
الإصدار 3.1.0-rc01
3 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.paging:paging-*:3.1.0-rc01
. يحتوي الإصدار 3.1.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح شرط السباق + تسرُّب الذاكرة في .cachedIn() في الحالات التي تم فيها إرسال أحداث تحميل متعددة عن طريق نقل البيانات باتجاه الأسفل أثناء عدم وجود مراقبين أو بين وقت تبديل المراقب إلى بيانات PagingData جديدة. (Ib682e)
الإصدار 3.1.0-beta01
13 تشرين الأول (أكتوبر) 2021
تم طرح androidx.paging:paging-*:3.1.0-beta01
. يحتوي الإصدار 3.1.0-beta01 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة تسبب العديد من عمليات الوصول السريعة إلى العناصر في إسقاطها في الاعتبار أثناء عملية الجلب المسبق للمسافة، ما يتسبّب في توقّف عمليات تحميل الصفحات. وهذه مشكلة خاصة عندما يتم وضع العديد من العناصر في وقت واحد بترتيب يمنح الأولوية للتحميل في ضوء اتجاه التمرير لدى المستخدم. ويتم الآن تخزين عمليات الوصول إلى العناصر هذه مؤقتًا وترتيبها حسب الأولوية بشكل متزامن لمنع تجاهلها. (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
. في السابق، كان من الممكن تم الوصول إلى endOfPagination totrue
for RemoteMediatorREFRESH
، ولكن ليس لـ PagingSource. يتم الآن دمج هذا السلوك للعودة دائمًاfalse
إذ ليس من المنطقي أن تكون وظيفة REFRESH طرفية، كما هي الآن موثقة كجزء من عقد واجهة برمجة التطبيقات في LoadStates. عند تحديد ما إذا كان يتم إنهاء التقسيم على صفحات، فيجب عليك دائمًا إجراء ذلك في ما يتعلق إما توجيه "APPEND" أو "PREPEND". (I047b6) LoadStates من Paging بانتظار الآن قيم صالحة من كليهما PagingSource وRemoteMediator قبل إرسال تدفق انتقال البيانات بين الأجيال. يمنع ذلك الأجيال الجديدة من إرسال بيانات PagingData يجب عدم التحميل في ManagedLoadStates.source.refresh إذا كان من قبل. جارٍ التحميل سوف تبدأ الآن الأجيال الجديدة من بيانات PagingData بشكل صحيح مع "التحميل لحالة التحديث" بدلاً من إعادة الضبط أولاً على NotLoading بشكل غير صحيح في بعض الحالات.
يحدث إلغاء الأجيال السابقة الآن بلهفة عند الإبطال / للأجيال الجديدة. يجب ألا يكون استخدام .collectLatest مطلوبًا بعد الآن على
Flow<PagingData>
، علمًا أنّنا لا نزال ننصح بشدة بإجراء ذلك. (I0b2b5، b/177351336، b/195028524).loadStateFlow
و.addLoadStateListener
على واجهات برمجة تطبيقات العرض عدم إرسالCombinedLoadStates
أولي بشكل متكرر والتي تكون دائمًا حالات الوسيط مضبوطة علىnull
وحالات المصدر المحددة علىNotLoading(endOfPaginationReached = false)
ويعني هذا أنّ:- سيتم ملء حالات الوسيط دائمًا إذا استخدمت RemoteMediator.
- تسجيل أداة استماع جديدة لـ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.Inactive إلى PagingSource. عند إرجاع PagingSource.load LoadResult.غير صالح، سيؤدي الترحيل إلى تجاهل البيانات التي تم تحميلها إلغاء صلاحية PagingSource. تم تصميم نوع الإرجاع هذا معالجة البيانات التي يُحتمل أن تكون غير صالحة أو قديمة والتي يمكن عرضها من قاعدة البيانات أو الشبكة.
على سبيل المثال، إذا تمت كتابة قاعدة البيانات الأساسية إلى عدم إلغاء صلاحية PagingSource في الوقت المناسب، فقد يتم عرض نتائج غير متسقة إذا كان تنفيذه يعتمد على عدم قابلية مجموعة البيانات الاحتياطية التي يتم تحميلها منها (على سبيل المثال، LIMIT عمليات تنفيذ قاعدة البيانات لنمط OFFSET). في هذا السيناريو، من يُنصح بالتحقق من الإيقاف بعد التحميل عرض LoadResult.Unknown، وهو ما يؤدي إلى تجاهل نظام الترحيل لأي طلبات تحميل معلقة أو مستقبلية إلى PagingSource هذا إبطاله.
إنّ نوع الإرجاع هذا متاح أيضًا في Paging2 API التي تستفيد من LivePagedList أو RxPagedList. عند استخدام PagingSource مع لواجهات برمجة تطبيقات PagedList لـ Paging2، يتم فصل PagedList على الفور، إيقاف المزيد من المحاولات لتحميل البيانات في قائمة الصفحات هذه تؤدي إلى إلغاء الاشتراك على PagingSource.
LoadResult هي فئة مختومة، مما يعني أنها التغيير غير المتوافق مع المصدر مثل حالات الاستخدام المباشرة يجب أن تتعامل نتائج PagingSource.load مع LoadResult.Unknown في وقت التجميع. على سبيل المثال، يستفيد مستخدمو Kotlin من حالات شاملة للتحقّق من نوع الإرجاع، يجب إضافة علامة تحقّق لنوع غير صالح. (Id6bd3، b/191806126، b/192013267)
إصلاح الأخطاء
- عمليات معاودة الاتصال بالإبطال التي تمت إضافتها عبر PagingSource.registercertifiedatedCallback أو يتم الآن تشغيل DataSource.addInappropriateatedCallback تلقائيًا في حال: المُسجلة على PagingSource / DataSource الذي تم استخدامه بالفعل غير صالح. يحل ذلك حالة السباق التي تسببت في انخفاض عملية الترحيل إشارات إبطال الخدمة وتتعطل عند توفير مصدر غير صالحة بالفعل أثناء التحميل الأولي. بالإضافة إلى ذلك، إيقاف تتم الآن إزالة عمليات الاسترداد بشكل صحيح بعد تشغيلها كما هي مضمونًا ليتم طلبه مرة واحدة على الأكثر. (I27e69)
- إرسال القيمة الأولية للعنصر النائب (InitialPagedList) من مصدر بيانات PagedList الذي تم إنشاء مثيل له حديثًا، على سبيل المثال: لن يمحو LivePagedListBuilder أو RxPagedListBuilder بعد الآن البيانات التي تم تحميلها من قبل.
الإصدار 3.1.0-alpha02
1 تموز (يوليو) 2021
تم طرح androidx.paging:paging-*:3.1.0-alpha02
. يحتوي الإصدار 3.1.0-alpha02 على هذه عمليات التنفيذ.
الميزات الجديدة
تمت إضافة واجهات برمجة تطبيقات المستمع ومقدم التدفق على onPagesPresented والذي يتم تشغيله مباشرةً بعد تحديث الصفحات المعروضة في واجهة المستخدم.
بما أنّ هذه التحديثات متزامنة مع واجهة المستخدم، يمكنك استدعاء طرق المحوّلات. مثل .snapshot و .getItemCount لفحص الحالة بعد تم تطبيق تحديث. يُرجى العِلم أنّه تم ترك .snapshot() بشكل صريح لأنه قد يكون مكلفًا عند كل تحديث.
ويمكن أن يتم تعديل الصفحات في الحالات التالية:
- اكتمل التحميل الأولي لجيل جديد من بيانات PagingData، بغض النظر عما إذا كان الجيل الجديد يتضمن أي تغييرات على بالعناصر المعروضة. بعبارة أخرى، جيل جديد يكمل التحميل الأولي بدون أي تحديثات لأن القائمة كما هي تمامًا ستظل تؤدي إلى تشغيل معاودة الاتصال هذه.
- يتم إدراج صفحة، حتى إذا كانت الصفحة المدرجة لا تحتوي العناصر
- يتم تجاهل الصفحة حتى إذا كانت الصفحة التي تم إفلاتها فارغة (I272c9، b/189999634).
إصلاح الأخطاء
- الوصول إلى PagedList.dataSource من القيمة الأولية التي تم إنتاجها بواسطة LivePagedList أو RxPagedList، لن تعرض الخطأ UnknownStateException (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)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبب أحيانًا في إرسال حالة عدم التشغيل أثناء التنقل بين الصفحات الأحداث في RecyclerView، ما قد يؤدي إلى تشغيل بعض برامج معالجة البيانات مبكرًا. (Ic507f، b/182510751)
مساهمة خارجية
- تمت إضافة واجهات برمجة تطبيقات PagedList compat المتوقّفة نهائيًا إلى rxjava3 Artifact (Id1ce2 وb/182497591).
الإصدار 1.0.0 من ميزة إنشاء الصفحات
الإصدار 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 على هذه عمليات التنفيذ.
إتاحة جميع التنسيقات الكسولة
في السابق، كانت ميزة "إنشاء الصفحات" توفّر إضافات items
وitemsIndexed
مخصّصة على LazyListScope
، ما يعني أنّه لم يكن بإمكانك استخدام ميزة "إنشاء الصفحات" مع التنسيقات الكسولة الأخرى مثل LazyVerticalGrid
أو HorizontalPager
أو غيرها من المكوّنات الكسولة المخصّصة التي توفّرها مكتبات Wear والتلفزيون. إنّ معالجة مشكلة عدم المرونة هذه هي التحديث الأساسي لهذا الإصدار.
لإتاحة المزيد من التنسيقات الكسولة، احتجنا إلى إنشاء واجهات برمجة تطبيقات بطبقة مختلفة، بدلاً من توفير واجهة items
API مخصَّصة لكل تنسيق غير نشط، توفّر ميزة "إنشاء الصفحات" الآن طرق إضافة ذات مستوى أدنى قليلاً على 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)
التحديثات المتعلقة بالاعتمادية
- تم تعديل تبعية ميزة "إنشاء التنقل" من 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)
المستخدَمين لربط نظام الترحيل باستخدام "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 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- LazyPagingItems' يمكن الآن ملاحظة itemCount وitem getter، ما يتيح استخدامهما مع LazyVerticalGrid أيضًا (Ie2446 وb/171872064 وb/168285687).
التوافق مع إنشاء الرسائل
- يتوافق "
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 على هذه عمليات التنفيذ.
تم التعديل للدمج مع Compose 1.0.0-beta01.
الإصدار 1.0.0-alpha07
10 شباط (فبراير) 2021
تم طرح androidx.paging:paging-compose:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه عمليات التنفيذ.
تم التعديل للدمج مع Compose alpha12.
الإصدار 1.0.0-alpha06
28 يناير 2021
تم طرح androidx.paging:paging-compose:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه عمليات التنفيذ.
إصلاح الأخطاء
تم التعديل لكي يعتمد على الإصدار 1.0.0-alpha11 من Compose.
الإصدار 1.0.0-alpha05
13 كانون الثاني (يناير) 2021
تم طرح androidx.paging:paging-compose:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على هذه عمليات التنفيذ.
تم تعديلها لكي تعتمد على الإصدار 1.0.0-alpha10 من Compose.
الإصدار 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 على هذه عمليات التنفيذ.
- تم التعديل ليتطابق مع Compose 1.0.0-alpha08.
الإصدار 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
التكامل بين The Paging Library و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
لن يؤدي بعد الآن إلى عرض رسالة UnknownStateException (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
- دعم الإلغاء
- حالة التحميل وإشارات الخطأ المدمجة
- إعادة المحاولة وإعادة التحميل
- تم دمج الفئات الفرعية الثلاث لمصادر البيانات في فئة موحّدة من مصدر PagingSource
- عمليات تحويل مخصّصة للصفحات، بما في ذلك عملية مدمجة لإضافة فواصل
- جارٍ تحميل رؤوس وتذييلات الحالة
الإصدار 3.0.0-rc01
21 نيسان (أبريل) 2021
تم طرح androidx.paging:paging-*:3.0.0-rc01
. يحتوي الإصدار 3.0.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبب أحيانًا في إرسال حالة عدم التشغيل على الصفحات في بعض الأحيان الأحداث في 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 من استرجاع الصفحات مرة أخرى لتنفيذ
prefetchDistance
، ما يؤدي إلى "توقّف نقل الصفحات".
الإصدار 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
أثناء إعدادDataSource
، عند استخدامه عبر مسارات التوافق، يتم تشغيله بشكل صحيح الآن على SpamDispatcher بدلاً من سلسلة التعليمات الرئيسية. يؤدي ذلك إلى إصلاحIllegalStateException
بسبب وصول قاعدة البيانات إلى سلسلة التعليمات الرئيسية عند استخدام تنفيذPagingSource
في الغرفة.
الإصدار 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، وضع علامة على endOfPaginationReached قبل إضافة الوحدة الطرفية فواصل. في حال عدم استخدام RemoteMediator، تكون حالة التحميل عن بُعد هي وتجاهل. ويمكنك الاستفادة من ذلك في المقام الأول إذا كنت تريد عرض القسم فقط. عند تحميل القسم بالكامل، بما في ذلك الفواصل الإعلانية من المصدر البعيد مثل الشبكة.SOURCE_COMPLETE
: انتظار وضع علامة PagingSource فقط endOfPaginationReached حتى إذا تم استخدام RemoteMediator. هذا يسمح ليتم عرض الرؤوس والتذييلات بشكل متزامن مع الحرف مما يمنع المستخدمين من الحاجة إلى الانتقال للأعلى أو للأسفل للاطّلاع على الوحدة الطرفية فواصل. (Ibe993، b/174700218)
إصلاح الأخطاء
- تم إصلاح تسرُّب الذاكرة النادر الذي يحدث عندما يكون مصدر PagingSource قبل أن تتمكن ميزة جلب الصفحات من بدء التحميل منه. (I9606b، b/174625633)
الإصدار 3.0.0-alpha12
13 كانون الثاني (يناير) 2021
تم طرح androidx.paging:paging-*:3.0.0-alpha12
. يحتوي الإصدار 3.0.0-alpha12 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- لم تعد قيمة DeagingPagingSource يمكنها فئة مجردة لأنها لم تستخدم مطلقًا أي طرق مجردة. (I4a8c4)
- تمت إضافة حمل زائد لـ .cachedIn() يقبل استخدام ViewModel بدلاً من Lifecycle أو CoroutineScope لمستخدمي Java. (I97d81، b/175332619)
- السماح لمتصلي Java باستخدام عمليات تحويل PagingData في
بطريقة غير متزامنة، من خلال قبول المُنفِّذ إلى مشغل تحويل
الوسيطة. تستخدم جميع عوامل تشغيل التحويل -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
دالة مفتوحة. إذا كنت إلى تلقّي إشعارات عند إلغاء الاشتراك، يمكنك يمكن استخدام طريقة recordgmailatedCallback بدلاً من إلغاء المصادقة غير الصالحة. (I628d9، وb/173029013، وb/137971356) - تضم جهاز النداء الآن دالة إنشاء تجريبية واحدة إلى جانب الدوال الإنشائية العادية، بدلاً من تسريب واجهات برمجة التطبيقات التجريبية إلى واجهة برمجة تطبيقات عامة غير تجريبية عبر التعليق التوضيحي للتفعيل. (I9dc61، b/174531520)
- تم تحديث خصائص الراحة،
CombinedLoadStates.refresh
،CombinedLoadStates.prepend
،CombinedLoadStates.append
للانتقال منLoading
إلىNotLoading
فقط بعد أن تصبح حالة تحميل الوسيط والمصدرNotLoading
لضمان تم تطبيق تحديث عن بُعد. (I65619) تمت إزالة LoadParams.pageSize (كان سابقًا) نهائيًا). وننصحك باستخدام
LoadParams.loadSize
في PagingSource.تساوي
LoadParams.loadSize
دائمًاPagingConfig.pageSize
. باستثناء طلب التحميل الأولي الذي تساوي فيهPagingConfig.initialLoadSize
إذا كنت تختبر Paging2 DataSource بدون استخدام جهاز نداء أو PagedList، قد لا تتطابق السمة
pageSize
معPagingConfig.pageSize
في حال يتم أيضًا ضبطinitialLoadSize
. إذا كان من المهم يمكنك استخدام أداة Pager/PagedList بدلاً منها، حيث يتم تعيين حجم الصفحة الصحيح لطرق تحميل مصدر البيانات. (I98ac7، b/149157296)
إصلاح الأخطاء
- تم إصلاح عطل ناتج عن حدوث UnknownStateException عند باستخدام فواصل مع تعيين PagingConfig.maxSize. (I0ed33، b/174787528)
- تم إصلاح خطأ عدم قدرة حالة التحميل على PREPEND / APPEND
التحديث إلى
NotLoading(endOfPaginationReached = true)
فورًا بعد التحميل المبدئي في حال ضبط RemoteMediator (I8cf5a) - تم إصلاح الخطأ الذي تؤدي فيه واجهات برمجة التطبيقات من جهة المقدِّم، مثل .snapshot() و .peek() وغيرها، إلى عرض القائمة السابقة (القديمة) ضمن تحديثات ListUpdateCallback.
- تم إصلاح الخطأ الذي كان لا تتم فيه إضافة عوامل التشغيل الفاصلة للرؤوس أو التذييلات عند استخدامها مع RemoteMediator
- تم إصلاح الخطأ الذي تسبَّب في إيقاف تحديثات LoadState إلى NotLoading for RemoteMediator.
- تم إصلاح الخطأ الذي تتسبب فيه واجهة برمجة التطبيقات للتوافق Paging2.0،
.asPagingSourceFactory()
، في إعدادDataSource
للنسخ الاحتياطي على CoroutineDispatcher غير الصحيح. يساعد ذلك في حل الأعطال وحالات ANR المحتمَلة، خاصةً عند استخدام التنفيذ الحالي في الغرفة لـ 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 }
إصلاح الأخطاء
- endOfPaginationReached عن RemoteMediator
REFRESH
الآن النشر بشكل صحيح إلى تحديثات LoadState ومنعAPPEND
عن بُعدPREPEND
من التشغيل. (I94a3f، b/155290248) - عرض قائمة فارغة إما لأن الصفحة الأولية فارغة أو
لن تؤدي الفلترة المكثّفة إلى منع الترحيل من بدء
PREPEND
. أوAPPEND
. (I3e702، b/168169730) - تم إصلاح المشكلة المتمثلة في عدم استدعاء
getRefreshKey
الأجيال اللاحقة من PagingSource عند حدوث عمليات إلغاء بسرعة. (I45460، b/170027530)
مساهمة خارجية
- تمت إضافة فئة مجردة جديدة وهي SpamtingPagingSource يمكنها.
باستخدام واجهة برمجة تطبيقات
.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 تمامًا باستخدام الاستبدال مع. (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)
إصلاح الأخطاء
- تم تحسين تفاعل الصفحات مع ViewPager بشكل كبير. وعلى وجه التحديد، لن يؤدي الترحيل إلى إلغاء استدعاء الدالة
RemoteMediator#load
بسبب إيقاف الصفحة. كما أنه لن يقدم طلب إلحاق أو بداية تحميل بعد الآن، إذا كان الأمر "تحديث" مطلوبًا، حتى يكتمل طلب "إعادة التحميل" بنجاح. (I6390b، b/162252536) - تم تفعيل "فحص أداة Lint API" لـ LostGetterMatchingBuilder لنظام التشغيل 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 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تقبل المشغلات غير المتزامنة PagingData المستندة إلى Java الآن أداة تنفيذ كمعلّمة للتحكّم في سياق التنفيذ (Id4372)
إصلاح الأخطاء
- تم طرح استثناء IndexOutOfBounds ثابت في RemoteMediator بسبب إلى شرط السباق. (I00b7f، b/165821814)
- تم إصلاح شرط السباق في DataSource -> الإحالة الناجحة من خلال PagingSource التي قد تؤدي إلى تجاهل بيانات PagingSource الناتجة لإشارات الإلغاء من DataSource.
- تم إصلاح مشكلة في منطق جلب الصفحة قد تتسبب أحيانًا في تعذُّر التقاط الأجيال الجديدة من PagingSource حتى يتم استدعاء PagingDataAdapter.refresh() .
- تم إصلاح مشكلة كانت تؤدي أحيانًا إلى فقدان موضع التمرير عند استخدام مصدر بيانات يتم تحويله إلى PagingSource (مثل المصدر الذي تنتجه الغرفة)، بالتزامن مع RemoteMediator
مساهمة خارجية
- نشكر @simonschiller على إضافة عوامل التشغيل غير المتزامنة المستندة إلى RxJava2 وRxJava3 وJuava في PagingData.
الإصدار 3.0.0-alpha06
2 أيلول (سبتمبر) 2020
تم طرح androidx.paging:paging-*:3.0.0-alpha06
. يحتوي الإصدار 3.0.0-alpha06 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
UnsupportedOperationException
باستخدام رسائل أوضح حول يحدث الآن عدم توافق المعرّفات الثابتة كلماPagingDataAdapter.setHasStableIds
يَحْمِلُ الِاسْمْ. (Ib3890، b/158801427)
إصلاح الأخطاء
- لم تعد أداة InsertSeparters تعمل على فلترة الصفحات الفارغة مما يسمح جلب المسافة مسبقًا ليحترمها مقدم العرض حتى في الحالات التي يتم إدراج العديد من الصفحات الفارغة. (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()
إلىAsyncPagingDataDiffer
PagingDataAdapter
للسماح بالوصول إلى البيانات المعروضة بدون صفحة المشغّل التحميل. (I38898، b/159104197) - تمت إضافة
snapshot()
API إلىPagingDataAdapter
AsyncPagingDataDiffer
للسماح باسترداد العناصر المعروضة بدون يؤدي إلى تشغيل جلب الصفحة. (I566b6، b/159104197) - تمت إضافة دالة إنشائية
PagingData.from(List<T>)
للسماح بها. تقديم القوائم الثابتة، والتي يمكن دمجها مع تدفق بيانات PagingData لعرض القوائم الثابتة في حالات معيّنة، على سبيل المثال، قبل الانتهاء من REFRESH الأولية أو ببساطة لاختبار التحويلات. (Id134d) - إيقاف البيانات نهائيًا لواجهات برمجة التطبيقات dataRefresh / Listener API كما كانت يهدف إلى إظهار حالة العناصر المعروضة في REFRESH، ولكن مع التحسينات على وقت استدعاء حالة الطلب / المستمع، وسمة itemCount، يُعتبر هذا المحتوى مكررًا (Ia19f3)
- تمت إضافة برامج تضمين التوافق مع RxJava3 لكل من
PagingSource
وRemoteMediator
(I49ef3 وb/161480176).
إصلاح الأخطاء
- تم تحويل
PositionalDataSource
إلىPagingSource
عبر مساعدtoPagingSourceFactory
، بما في ذلكPagingSource
الذي تم إنشاؤه من خلال الغرفة الآن تشير إلى نفسها بشكل صحيح لدعم القفز. (I3e84c، b/162161201) - تم إصلاح الخطأ المتمثل في استخدام الصيغة المتزامنة لـsubmitData
في بعض الأحيان إلى سباق ما يتسبب في
ClosedSendChannelException
(I4d702، b/160192222)
مساهمة خارجية
- نتوجّه بالشكر إلى Zac Sweers على إضافة برامج تضمين التوافق مع 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).
- تم إخفاء متغيرات دالة خريطة kotlin في DataSource من Java، لحل الغموض بين المتغيرات الأصلية والنسخة الكوتلينية. (If7b23 وb/161150011)
- واجهات برمجة التطبيقات المتكررة والمخصصة كوسائل راحة لمستخدمي Kotlin تم وضع علامة @JvmSynthetic (I56ae5)
- تمت إضافة أحمال زائدة للدالة الإنشائية لـ LoadResult.Page. الذي يقوم افتراضيًا بـ itemsBefore وitemafter إلى COUNT_UNDEFINED (I47849)
- تم جعل عوامل تشغيل بيانات PagingData الحالية تقبل طرق التعليق وقدّمت ميزات جديدة مثل mapSync وflaMapSync وfilterSync غير المعلقة. المشغلات لمستخدمي Java. وتم استخدام طرق التحويل الحالية انتقلنا إلى دوال الإضافة، وبالتالي سيحتاج مستخدمو Kotlin الآن إلى استيرادها. (I34239، b/159983232)
إصلاح الأخطاء
- ستصبح ميزة PagingSources للغرفة (وPositionalDataSource) متاحة الآن عرض فاصل بادئ كجزء من الصفحة الأولى، بحيث يمكن لا يحتاج إلى التمرير للكشف عنه. (I6f747، b/160257628)
- إذن الوصول إلى العناصر النائبة الآن تشغيل عمليات تحميل PagingSource بشكل صحيح حتى يتم إرجاع صفحة تفي بالفهرس المطلوب بعد التحويل باستخدام PagingData.filter() (I95625, b/158763195)
- إصلاح خلل يتمثّل في التمرير أحيانًا تعرض PagingSource خطأً قد يمنع PagingDataAdapter.retry(). من إعادة المحاولة. (I1084f، b/160194384)
- حل مشكلة تتعلق بإمكانية الوصول إلى العنصر بعد إسقاط صفحة عدم تحميل الصفحات على الرغم من أن الوصول إلى العنصر كان ضمن مسافة الجلب المسبق (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 وJava لـ RemoteMediator - RxRemoteMediator وListenableFutureRemoteMediator
- تمت إضافة أدوات مساعدة إلى PagingState للوصول إلى العناصر الشائعة، مثل
isEmpty()
وfirstItemOrNull()
(I3b5b6، b/158892717).
إصلاح الأخطاء
- يتحقّق جهاز النداء الآن من إعادة استخدام PagingSource في المصنع، وذلك لمنع إعادة الاستخدام غير المقصود لمصادر PagingSources غير الصالحة، والتي أدّت إلى ظهور خطأ غير واضح (I99809، b/158486430).
- لم تعُد الأعطال التي حدثت في RemoteMediator REFRESH تؤدي إلى منع تحميل 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
- دعم من الدرجة الأولى كوروتينات Kotlin وFlow.
- إتاحة التحميل غير المتزامن باستخدام دوال الكوروتينين التي تعلّق، ومبادئ RxJava أحادي الاتجاه أو Java ListenableFuture.
- حالة التحميل وإشارات الخطأ المدمجة لتصميم واجهة المستخدم سريعة الاستجابة، بما في ذلك وظيفت إعادة المحاولة وإعادة التحميل.
- التحسينات على طبقة المستودع
- واجهة مبسّطة لمصدر البيانات
- تقسيم مبسّط على صفحات الشبكة وقاعدة البيانات
- إتاحة الإلغاء
- تحسينات على طبقة التقديم
المشاكل المعروفة
- الصفحة 3 من javadocs غير متاحة بعد. وحتى ذلك الحين، يُرجى استخدام الأدلة المُدرَجة أعلاه أو مستندات 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 حول آخر وصول عند إيقاف العناصر النائبة
الإصدار
الإصدار
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()
كبدائل لغة Kotlin للغةRxPagedListBuilder
. - تمت إضافة
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
بالنسبة إلى الإصدارات التي تلي ذلك قبل 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
" لتحقيق الاستقرار. تم أيضًا إصدار Paing RxJava2 1.0.1
، ويتطابق مع 1.0.0-rc1
.
إصلاح الأخطاء
- تم إصلاح الأعطال التي يتعذّر فيها على
PagedListAdapter
وAsyncPagedListDiffer
الإشارة إلى أحداث النقل. b/110711937
الإصدار 1.0.0 من RxJava2
RxJava2 الإصدار 1.0.0-rc1
16 أيار (مايو) 2018
نقل بيانات 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
، وارتفاع مستوى شريط أي تغييرات في واجهة برمجة التطبيقات مرتفع للغاية.
تم توفير دعم Alpha 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
الأولي على منفذ التنفيذ المحدّد، بدلاً من مجموعة سلاسل محادثات IO لمكونات Arc.تم إصلاح سلوك إلغاء الصلاحية في برامج تضمين
DataSource
الداخلية (المستخدمة لتنفيذDataSource.map
، وكذلك تحميلPositionalDataSource
الذي تم إيقافه عن طريق العنصر النائب) b/77237534
الإصدار 1.0.0-alpha7
21 آذار (مارس) 2018
تم إطلاق صفحة "1.0.0-alpha7
" بجانب "مراحل الحياة" 1.1.1
. بما أنّ عملية الترحيل alpha7 تعتمد على نقل الفئة Function
المذكورة أعلاه، ستحتاج إلى تعديل تبعية lifecycle:runtime
إلى android.arch.lifecycle:runtime:1.1.1
.
من المقرَّر أن يكون الإصدار alpha7
من الصفحات هو الإصدار النهائي قبل تنفيذ الإصدار التجريبي من عملية الترحيل.
التغييرات في واجهة برمجة التطبيقات
- تحتوي
DataSource.LoadParams
عناصر الآن على دالة إنشاء عامة، وأصبحت عناصرDataSource.LoadCallback
مجردة الآن. يتيح ذلك إكمالDataSource
أو اختبارDataSource
مباشرةً باستخدام معاودة اتصال وهمية. b/72600421 - مصممو الخرائط لـ DataSource وDataSource.Found
- يسمح لك
map(Function<IN,OUT>)
بتحويل النتائج التي تم تحميلها من خلالDataSource
أو التفافها أو تزيينها. - ويفعِّل
mapByPage(<List<IN>,List<OUT>>)
الإجراء نفسه للمعالجة على دفعات (على سبيل المثال، إذا كانت العناصر التي تم تحميلها من SQL بحاجة إلى الاستعلام عن قاعدة بيانات منفصلة بالإضافة إلى ذلك، يمكن تنفيذ ذلك على دفعة واحدة).
- يسمح لك
- تمت إضافة
PagedList#getDataSource()
كطريقة دفع سريعة. b/72611341 - تمت إزالة جميع الفئات المتوقّفة نهائيًا من واجهة برمجة التطبيقات، بما في ذلك ما تبقى من حزمة
recyclerview.extensions
وLivePagedListProvider
. - تم تغيير
DataSource.Factory
من واجهة إلى فئة مجردة لتفعيل وظيفة الخريطة.
إصلاح الأخطاء
- تم تغيير منصات الإنشاء لتكون نهائية. b/70848565
- تم إصلاح تنفيذ الغرفة
DataSource
الآن للتعامل مع طلبات البحث عبر الجداول المتعددة - تم تضمين هذا الحلّ في الغرفة 1.1.0-الإصدار التجريبي 1، يُرجى الاطّلاع أعلاه. - تم إصلاح الخطأ المتمثل في عدم استدعاء
BoundaryCallback.onItemAtEndLoaded
لـPositionalDataSource
في حال تفعيل العناصر النائبة الحجم الإجمالي هو مضاعف دقيق لحجم الصفحة.
الإصدار 1.0.0-alpha5
22 كانون الثاني (يناير) 2018
إصلاح الأخطاء
- إصلاح تحميل الصفحة عند إيقاف العناصر النائبة b/70573345
- تسجيل إضافي لتتبع خطأ UnknownArgumentException b/70360195 (وإصلاح خلل من جانب الغرفة)
- إصلاحات نماذج رموز Javadoc b/70411933 وb/71467637