15 كانون الثاني (يناير) 2019
مدير العمل
تم إصدار "1.0.0-beta02
" من WorkManager. يحتوي هذا الإصدار على بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة حافة كان يمكن فيها تشغيل العمل الدوري أكثر من مرة لكل فاصل زمني على الأجهزة التي تعمل بنظام التشغيل Android 6.0 (مستوى واجهة برمجة التطبيقات 23). b/121998363
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/121345393 - إصلاح التنفيذ الخاطئ للعمل عند عدم استيفاء القيود على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو أقل. b/122578012
- تحسين التعامل مع إنجاز العمل ليكون أكثر سرعة في بعض الحالات المتقدمة. b/122358129
- تمت إضافة تغيير لمعالجة ظروف السباق المحتملة بين مثيلات متعددة من
LiveData
يستخدمها WorkManager. - تم النقل لاستخدام تبعية
Room
1.1.1
بدلاً من1.1.1-rc01
، هذه الإصدارات متطابقة. b/122578011
19 كانون الأول (ديسمبر) 2018
مدير العمل
تم إصدار "1.0.0-beta01
" من WorkManager. لا يتضمّن هذا الإصدار أي تغييرات في واجهة برمجة التطبيقات. ومن الآن فصاعدًا، من المتوقّع أن يظل تطبيق WorkManager ثابتًا حتى الإصدار التالي ما لم تكن هناك مشكلة خطيرة. يحتوي هذا الإصدار على بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- ولن يتم تشغيل الوحدات الثانوية للعمل الرئيسي المكتمل بنجاح والتي تم إلغاؤها سابقًا. b/120811767
- فئات التسجيل المهيأة بشكل صحيح (تظهر بشكل أساسي أثناء الاختبارات).
18 كانون الأول (ديسمبر) 2018
التنقّل
تم تحرير شريط التنقل 1.0.0-alpha09
. يحتوي هذا الإصدار على تغييرات قد تؤدي إلى أعطال في واجهة برمجة التطبيقات.
يُرجى الاطّلاع على قسم أعطال التغييرات أدناه.
لقد اخترنا عدم مواصلة تطوير
عنصر android.arch.navigation:navigation-testing
. أثبتت هذه العملية فعاليتها في الاختبار الداخلي لـ NavController
، إلا أنّنا ننصح بشدة باستخدام استراتيجيات الاختبار البديلة، مثل السخرية من مثيل NavController
، للتأكّد من أنّه يتم تنفيذ طلبات navigate()
الصحيحة. تتم مناقشة هذا النهج بالتفصيل في
حديث النشاط الواحد ضمن AndroidDevSummit 2018
وسنعمل على تقديم مستندات إضافية تحديدًا حول الاختبار باستخدام ميزة التنقّل.
الميزات الجديدة
- لن تؤدي
MenuItem
s التي تتضمنmenuCategory="secondary"
إلى عرض المكدس الخلفي عند استخدامها مع طرقNavigationUI
. b/120104424 - يتيح لك
AppBarConfiguration
الآن ضبط مثيلOnNavigateUpListener
الاحتياطي الذي يتم طلبه عند عودةnavController.navigateUp()
false
. b/79993862 b/120690961
تغييرات قد تؤدي إلى أعطال
- عند استخدام
<argument>
معargType="reference"
، لن تعمل ميزة التنقّل على تحليل المرجع، بل توفّر معرّف المورد الأوّلي نفسه. b/111736515 onNavDestinationSelected()
تعود الآن تلقائيًا إلى وجهة البداية للرسم البياني للتنقل، مما يجعلها متسقة مع طرقsetup
. يجب إضافةmenuCategory="secondary"
إلىMenuItem
لتجنُّب إيقاف الحزمة مرة أخرى. aosp/852869fromBundle()
طرق إنشاءArgs
الصفوف تأخذ الآن قيمة غير فارغةBundle
بدلاً منBundle
aosp/845616
إصلاح الأخطاء
- يتم الآن تحليل الوسيطات بشكلٍ صحيح من الروابط لصفحات في التطبيق على أنها
argType
الصحيحة بدلاً من أن تكون دائمًا كسلاسل b/110273284 - يصدّر التنقل الآن موارده العامة بشكل صحيح b/121059552
- Safe Args متوافقة الآن مع المكوّن الإضافي Android Gradle 3.4 Canary 4 والإصدارات الأحدث b/119662045
12 كانون الأول (ديسمبر) 2018
مدير العمل
تم إصدار "1.0.0-alpha13
" من WorkManager. يتضمّن هذا الإصدار تغييرًا بسيطًا في واجهة برمجة التطبيقات سيكون مفيدًا لبعض مستخدمي لغة Kotlin.
تغييرات واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
ليكون فئة داخلية فيListenableWorker
. يمنع ذلك تعارضات إعادة الهيكلة مع فئةResult
ذات المستوى الأعلى في Kotlin. هذا تغيير قد حدث في واجهة برمجة التطبيقات. b/120564418
كسر التغييرات في واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
ليكون فئة داخلية فيListenableWorker
.
6 كانون الأول (ديسمبر) 2018
ترقيم الصفحات
تم إصدار صفحة تسجيل الصفحات 2.1.0-rc01
بدون أي تغييرات من 2.1.0-beta01
.
التنقّل
تم تحرير شريط التنقل 1.0.0-alpha08
. يحتوي هذا الإصدار على تغييرات قد تؤدي إلى أعطال في واجهة برمجة التطبيقات.
يُرجى الاطّلاع على قسم أعطال التغييرات أدناه.
الميزات الجديدة
- عند استخدام تصنيفات الوجهة مع طرق
NavigationUI
، ستحل الآن تلقائيًا محل{argName}
مثيلات فيandroid:label
بالوسيطة الصحيحة b/80267266 - يعتمد التنقّل الآن على الإصدار 28.0.0 من Support Library b/120293333
تغييرات قد تؤدي إلى أعطال
- تمت إعادة تسمية
OnNavigatedListener
إلىOnDestinationChangedListener
b/118670572 - يجتاز
OnDestinationChangedListener
الآن أيضًاBundle
من الوسيطات aosp/837142 - تمت إزالة السمتَين
app:clearTask
وapp:launchDocument
والطرق المرتبطة بهما. يمكنك استخدامapp:popUpTo
مع جذر الرسم البياني لإزالة جميع الوجهات من الحزمة الخلفية. b/119628354 - يستخدم
ActivityNavigator.Extras
الآن نمطBuilder
مع إمكانية ضبط أي علاماتIntent.FLAG_ACTIVITY_
. aosp/828140 - تمت إعادة تسمية
NavController.onHandleDeepLink
إلىhandleDeepLink
aosp/836063 - تم
final
aosp/835681 العديد من الفئات والطرق غير المخصصة للفئات الفرعية، مثلNavOptions
وNavInflater
وNavDeepLinkBuilder
وAppBarConfiguration
. - تمت إزالة طريقة
NavHostFragment.setGraph()
المتوقّفة نهائيًا aosp/835684 - لقد أزلنا طريقة
NavigationUI.navigateUp(DrawerLayout, NavController)
المتوقّفة نهائيًا. aosp/835684 - تم نقل إنشاء الجزء إلى
FragmentNavigator
، لتسهيل تفويض إنشاء جزء إلىFragmentFactory
. b/119054429 - لم تعُد الدالة الإنشائية لـ
NavGraphNavigator
تستخدمContext
aosp/835340 - أصبح NavigatorProvider
فئة الآن بدلاً من واجهة. لم يتم تغيير وظائف
NavigatorProvider
التي يعرضهاgetNavigatorProvider()
. aosp/830660 - تمّت إزالة
NavDestination.navigate()
. يمكنك الاتصال بـnavigate()
علىNavigator
بدلاً من ذلك. aosp/830663 - إعادة هيكلية كبيرة لـ
Navigator
، ما يؤدّي إلى إلغاء الحاجة إلىOnNavigatorNavigatedListener
وبدلاً من ذلك جعلnavigate
يعيدNavDestination
الذي تم الانتقال إليه. - لم يعُد بإمكان
Navigator
مثيل إرسال أحداث منبثقة إلىNavController
. ننصحك باستخدامOnBackPressedCallback
لاعتراض ضغطات زر الرجوع والاتصال بـnavController.popBackStack()
. aosp/833716
إصلاح الأخطاء
- تعمل
popUpTo
الآن بشكل متسق عندما تكون الوجهة عبارة عن عنصر<navigation>
b/116831650 - تم إصلاح عدد من الأخطاء التي أدت إلى حدوث الخطأ
IllegalArgumentException
عند استخدام الرسوم البيانية المدمجة b/118713731 b/113611083 b/113346925 b/113305559 - ستعمل السمة
dataPattern
للوجهات<activity>
الآن على تعبئة الوسيطات من الوسيطات التي ليست سلسلة من خلال استدعاءtoString()
b/120161365
الوسيطات الآمنة
- تدعم Safe Args الكائنات القابلة للتسلسل، بما في ذلك قيم Enum. يمكن لأنواع التعدادات
ضبط قيمة تلقائية باستخدام التعداد الحرفي بدون اسم الفئة
(على سبيل المثال
app:defaultValue="READ"
) b/111316353 - تتيح ميزة Safe Args المصفوفات من جميع الأنواع المتوافقة. b/111487504
- تتجاهل Safe Args الآن المجلدات الفرعية لأدلة الموارد. b/117893516
- تضيف Safe Args تعليقات
@Override
التوضيحية حيثما كان ذلك مناسبًا b/117145301
5 كانون الأول (ديسمبر) 2018
مدير العمل
تم إصدار "1.0.0-alpha12
" من WorkManager. يحتوي هذا الإصدار على بعض التغييرات العاجلة في واجهة برمجة التطبيقات. يُرجى مراجعة القسم Breaking API Changes (التغييرات في واجهة برمجة التطبيقات) أدناه. من المرجَّح أن يتم إطلاق هذا الإصدار كأول إصدار تجريبي. تتضمّن "alpha12
" أيضًا تعديلات شاملة على المستندات.
تغييرات واجهة برمجة التطبيقات
- يعرض العنصر الجديد "
work-rxjava2
" عنصر "RxWorker
". هذا هوListenableWorker
الذي يُتوقعSingle<Payload>
. - تم إيقاف منصة Firebase JobDispatcher بسبب إيقافها قريبًا. هذا يعني أنّه لن يتم تعديل عنصر "
work-firebase
" بعد الآن مع انتقالنا إلى الإصدار التجريبي. نحن نسعى إلى إضافة بديل في المستقبل. - تم جمع
Payload
فيResult
. أصبحتResult
الآن "فئة مغلقة" تتضمّن ثلاث عمليات تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. نتائجListenableFuture
الآن هيResult
بدلاً منPayload
. لا تتضمّنWorker
طرق الاستلام والضبط للمخرجاتData
. هذا تغيير قد يؤدي إلى عطل. - تمت إضافة
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
والصيغ المختلفة لدعم معرّفات الموارد المنتظمة (URI) للمحتوى ذات التشغيل البطيء بشكل أفضل. b/119919774 - تمت إضافة صيغة واحدة (
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
). تتطلب هذه الطريقة واجهة برمجة التطبيقات 26. - تم إدراج طريقتَي الإضافة
Operation.await()
وListenableFuture.await()
في Kotlin. - تمت إعادة تسمية
Operation.getException()
إلىOperation.getThrowable()
. هذا تغيير قد يؤدي إلى عطل. - لم تعُد فئة
ContentUriTriggers
والطرق التي تشير إليها متاحة للاستخدام العام. هذا تغيير قد يؤدي إلى عطل. - تمت إزالة طُرق التباين الأخرى في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لإصلاح أي مشاكل في الإصدار، يمكنك إحاطة التباينات الحالية بـArrays.asList(...)
. ما زلنا نضمّن إصدارات الوسيطة الفردية لكل طريقة. هذا تغيير قد يؤدي إلى عطل. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
صيغة. كانت الشركة تقدّم واجهة برمجة تطبيقات مُربكة، لكنّ طُرقcombine
الحالية أكثر وضوحًا. هذا تغيير قد يؤدي إلى عطل.
إصلاح الأخطاء
- أصبحت عمليات تنفيذ ما قبل نظام التشغيل Marshmallow أكثر موثوقية في التعافي بعد إيقاف مهام قيد التنفيذ بالفعل.
- يتم تتبُّع
LiveData
الذي تتم ملاحظته من خلالobserveForever
من خلال WorkManager. هذا هو الجزء الخلفي لإصلاح مكتبة الغرفة. b/74477406 - يقدّم
Data.Builder.build()
الآن استثناءً إذا كان العنصر المتسلسل يتجاوز الحد الأقصى للحجم. في السابق، لم يكن بإمكانك التعامل مع هذه السلسلة من سلاسل محادثات في الخلفية بشكل صحيح. - المزيد من العناصر التي تم إيقافها مقابل العمل الملغا، وسيعرض
getWorkInfoById()
الخطأWorkInfo
معCANCELLED
State
خلالListenableWorker.onStopped()
. - التعامل مع
null
Result
كحالات تعذُّر فيListenableWorker
. b/120362353 - إصلاح نظري لأجهزة Shield اللوحية التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات والتي تعرض أحيانًا خطأ
IllegalArgumentException
. b/119484416
كسر التغييرات في واجهة برمجة التطبيقات
- تم إيقاف منصة Firebase JobDispatcher بسبب إيقافها قريبًا. هذا يعني أنّه لن يتم تعديل عنصر "
work-firebase
" بعد الآن مع انتقالنا إلى الإصدار التجريبي. نحن نسعى إلى إضافة بديل في المستقبل. - تم جمع
Payload
فيResult
. أصبحتResult
الآن "فئة مغلقة" تتضمّن ثلاث عمليات تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. نتائجListenableFuture
الآن هيResult
بدلاً منPayload
. لا تتضمّنWorker
طرق الاستلام والضبط للمخرجاتData
. - تم إدراج طريقتَي الإضافة
Operation.await()
وListenableFuture.await()
في Kotlin. - تمت إعادة تسمية
Operation.getException()
إلىOperation.getThrowable()
. - لم تعُد فئة
ContentUriTriggers
والطرق التي تشير إليها متاحة للاستخدام العام. - تمت إزالة طُرق التباين الأخرى في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لإصلاح أي مشاكل في الإصدار، يمكنك إحاطة التباينات الحالية بـArrays.asList(...)
. ما زلنا نضمّن إصدارات الوسيطة الفردية لكل طريقة. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
صيغة. كانت الشركة تقدّم واجهة برمجة تطبيقات مُربكة، لكنّ طُرقcombine
الحالية أكثر وضوحًا.
4 كانون الأول (ديسمبر) 2018
Room
تم إلغاء حجز الغرفة 2.1.0-alpha03
مع دعم الكوروتينات والعديد من إصلاحات الأخطاء.
تغييرات واجهة برمجة التطبيقات
- أصبحت قيمة FTS
tokenizer
في@Fts3
/@Fts4
الآن تتخذ سلسلة بدلاً من Enum. يسمح هذا الإجراء باستخدام برامج الرموز المميّزة المخصّصة بواسطة Room. لا تزال الرموز المميّزة المضمّنة محدّدة فيFtsOptions
كثوابت السلسلة. b/119234881
الميزات الجديدة
- الإجراءات الروتينية: يمكن الآن أن تكون طرق DAO تعليق الدوال. لإتاحة تعليق الدوال في الغرفة، تم إصدار عنصر جديد،
room-coroutines
. b/69474692 - طرق DAO التي تم التعليق عليها باستخدام
@Insert
أو@Delete
أو@Update
تتيح الآن استخدامListenableFuture
كنوع عرض. b/119418331
إصلاح الأخطاء
- تم إصلاح خطأ كانت فيه محاولة Room عن طريق الخطأ للعثور على دالة إنشائية تحتوي على أعمدة في السمة
ignoredColumns
في@Entity
. b/119830714 - تم إصلاح خطأ كان لا يُدرج فيه Room علامة على معلَمات طريقة DAO كنهائية في عملية التنفيذ التي يتم إنشاؤها. b/118015483
- تم إصلاح الخطأ المتمثل في تعطل معالج الغرفة عند الإبلاغ عن خطأ في طلب بحث يحتوي على رموز خاصة. b/119520136
- تم إصلاح خطأ كان يرفض غرفة ترفض عمليات تنفيذ
Collection
المختلفة كوسيطات لتعبيرIN
. b/119884035 - تم إصلاح الخطأ المتمثل في حصول بيانات LiveData التي يتم إرجاعها من Room على بيانات غير صالحة تم جمعها عندما تتم ملاحظتها على نحو دائم، ما أدى إلى توقفها عن إرسال بيانات جديدة. b/74477406
- تم تحديث قفل
RoomDatabase
للتقليل من تزايد الطلب على دالة الاستبعاد المتبادل. b/117900450
8 تشرين الثاني (نوفمبر) 2018
مدير العمل
تم إصدار "1.0.0-alpha11
" من WorkManager. يحتوي هذا الإصدار على العديد من التغييرات التي ستصبح واجهة برمجة تطبيقات ثابتة على beta
.
هناك تغييرات قد تؤدي إلى مشاكل في واجهة برمجة التطبيقات في هذا الإصدار. يُرجى الاطّلاع على القسم Breaking API Changes أدناه.
تغييرات واجهة برمجة التطبيقات
- "
work-runtime-ktx
" بصدد تقديم منتجCoroutineWorker
جديد - تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمت إعادة تسمية جميع صيغ طريقةgetStatus
المقابلة إلى صيغgetWorkInfo
المقابلة. هذا تغيير قد يؤدي إلى عطل. - لم يعد يقبل
ListenableWorker.onStopped()
وسيطة منطقية تشير إلى ما إذا تم إلغاءWorkRequest
. لم تعدWorkManager
تشكّل هذا الفارق. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. هذا تغيير قد يؤدي إلى عطل. - لم تعُد الأدوات على
Constraints
جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. هذا تغيير قد يؤدي إلى عطل. - عرض
WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفائف في السابق. والآن، تعرض هذه الطرق المجموعات. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. هذا تغيير قد يؤدي إلى عطل. - لم تعُد الدالة الإنشائية لـ
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. هذا تغيير قد يؤدي إلى عطل. - تمت إضافة الكثير من تعليقات
@NonNull
التوضيحية إلى واجهة برمجة التطبيقات العلنية لتحسين هندسة واجهة برمجة التطبيقات. - يمكنك إضافة واجهة برمجة تطبيقات
WorkManager.enqueueUniqueWork()
لإدراج واجهاتOneTimeWorkRequest
فريدة في قائمة الانتظار بدون الحاجة إلى إنشاءWorkContinuation
. - تعرض الآن جميع صيغ الطرق
enqueue
وcancel
علىWorkManager
نوعOperation
جديدًا. هذا تغيير قد يؤدي إلى عطل. - لم تعُد جميع صيغ
enqueue
تقبل المتغيّرات لـWorkRequest
. هذا تغيير قد يؤدي إلى عطل. يمكنك استخدام "المجموعات" بدلاً من ذلك. ويمكنك استخدامArrays.asList()
لتعديل الرمز الحالي. وقد أجرينا ذلك لتقليل مساحة واجهة برمجة التطبيقات وعدد طرقها. - وستؤدي محاولة
initialize
WorkManager
أكثر من مرة لكل عملية إلىIllegalStateException
. هذا تغيير قد يؤدي إلى عطل.
إصلاح الأخطاء
- تستخدم
WorkRequest.Builder
في العنصرwork-runtime-ktx
الآنListenableWorker
. إصلاحات b/117666259 - تأكَّد من أنّ وقت تشغيل
PeriodicWork
في المستقبل. إصلاحات b/118204399 - يمكنك إزالة عمليات إدخال/إخراج القرص المحتملة عند استخدام WorkManager عند بدء تشغيل التطبيق. إصلاحات b/117796731
- إصلاح شرط سباق في
WorkConstraintsTracker
. إصلاح android-workmanager/issues/56
كسر التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمت إعادة تسمية جميع صيغ طريقةgetStatus
المقابلة إلى صيغgetWorkInfo
المقابلة. - لم يعد يقبل
ListenableWorker.onStopped()
وسيطة منطقية تشير إلى ما إذا تم إلغاءWorkRequest
. لم تعدWorkManager
تشكّل هذا الفارق. - تمت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. - لم تعُد الأدوات على
Constraints
جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. - عرض
WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفائف في السابق. والآن، تعرض هذه الطرق المجموعات. - تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. - لم تعُد الدالة الإنشائية لـ
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. - تعرض الآن جميع صيغ الطرق
enqueue
وcancel
علىWorkManager
نوعOperation
جديدًا. - لم تعُد جميع صيغ
enqueue
تقبل المتغيّرات لـWorkRequest
. - وستؤدي محاولة
initialize
WorkManager
أكثر من مرة لكل عملية إلىIllegalStateException
.
1 تشرين الثاني (نوفمبر) 2018
ترقيم الصفحات
تم إصدار صفحة تسجيل الصفحات 2.1.0-beta01
بدون أي تغييرات من 2.1.0-alpha01
.
30 تشرين الأول (أكتوبر) 2018
Room
تم إصدار الغرفة 2.1.0-alpha02
مع إصلاح العديد من الأخطاء وإضافة ميزة جديدة.
الميزات الجديدة
- تمت إضافة إمكانية الإشارة إلى
@DatabaseView
في@Relation
. b/117680932
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في إجراء غرفة لإدخال/إخراج القرص في سلسلة التعليمات الرئيسية عند الاشتراك والتخلص من نوع إرجاع Rx. b/117201279
- تم إصلاح خطأ تعذُّر العثور على محوِّل نوع مناسب لحقل في فئة كيان Kotlin. b/111404868
- تم إصلاح خطأ يتمثّل في إنشاء غرفة رمز غير صحيح لتطبيق واجهة
DAO
تحتوي على طريقة تلقائية بلغة Kotlin لا تحتوي على أي وسيطات. b/117527454 - تم تحديث المحلل اللغوي لقواعد SQLite في الغرفة، مع حل مشكلة في الأداء قد تؤدي إلى أوقات إصدار طويلة. b/117401230
29 تشرين الأول (أكتوبر) 2018
التنقّل
تم إصدار شريط التنقّل 1.0.0-alpha07
مع إصلاحات للأخطاء وتغييرات في واجهة برمجة التطبيقات.
الميزات الجديدة
- تتيح لك فئة AppBarConfiguration الجديدة تخصيص الوجهات التي تُعتبر وجهات المستوى الأعلى. راجع المستندات المحدّثة للحصول على التفاصيل. b/117333663
- يمكنك الآن تمرير الوسيطات إلى وجهة البداية للرسم البياني b/110300470
- تتوافق الروابط لصفحات في التطبيق الآن مع المخططات المخصّصة التي تتضمّن نقاطًا وواصلات وعلامات جمع. b/112806402
تغييرات قد تؤدي إلى أعطال
- تم طي وحدة
navigation-testing-ktx
فيnavigation-testing artifact
ولن يتم نشرها بعد الآن. - تعتمد أداة
navigation-testing
الآن على مكتبة معايير لغة البرمجة Kotlin. تم تغيير واجهة برمجة التطبيقات لتصبح أكثر اتساقًا مع اصطلاحات Kotlin، ولكن يمكنك متابعة استخدامها للاختبارات المكتوبة بلغة Java. - لم تعُد الرسوم البيانية للتنقّل في بيان البيانات الوصفية متاحة. b/118355937
- لم يعُد من الممكن إرفاق الإجراءات بوجهات <activity>. aosp/785539
إصلاح الأخطاء
- تعمل روابط صفحات التطبيق الآن على تحليل مَعلمات طلب البحث بشكل صحيح. b/110057514
- تطبّق وجهات الأنشطة الآن جميع رسوم الدخول والخروج بشكلٍ صحيح. b/117145284
- العطل الذي تم إصلاحه يحدث بعد تغيير الإعداد عند استخدام برامج التنقل المخصصة. b/110763345
الوسيطات الآمنة
- أصبحت المنصات الآمنة الآن تعتمد على المكوّن الإضافي Android Gradle الإضافي 3.2.1. b/113167627
- يمكن الآن إنشاء التوجيهات للصفوف الداخلية. b/117407555
- تم إصلاح مشكلة إنشاء الاتجاهات إلى رسم بياني من <include>. b/116542123
12 تشرين الأول (أكتوبر) 2018
ترقيم الصفحات
تم إصدار 2.1.0-alpha01
ترقيم الصفحات مع إضافتَين رئيسيتَين: إزالة الصفحات، ومكتبات امتدادات KTX لكل عنصر، بالإضافة إلى العديد من التغييرات الأخرى في واجهة برمجة التطبيقات وإصلاحات الأخطاء.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة ميزة "
PagedList.Config.Builder.setMaxSize()
" للحدّ من عدد العناصر التي يتم تحميلها في الذاكرة. - تمت إضافة
androidx.paging.Config()
كبديل بلغة Kotlin للموقع الإلكترونيPagedList.Config.Builder
. - تمت إضافة
androidx.paging.PagedList()
كبديل بلغة Kotlin للموقع الإلكترونيPagedList.Builder
. - تمت إضافة
DataSourceFactory.toLiveData()
كبديل بلغة Kotlin للموقع الإلكترونيLivePagedListBuilder
. - تمت إضافة
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
11 تشرين الأول (أكتوبر) 2018
مدير العمل
تم إصدار 1.0.0-alpha10
من WorkManager مع دعم للعمل غير المتزامن الذي يتحكّم فيه المطوّرون. هناك تغييرات قد تؤدي إلى مشاكل في واجهة برمجة التطبيقات في هذا الإصدار. يُرجى الاطّلاع على القسم Breaking API Changes أدناه.
نتوقع أن تدخل WorkManager المراحل النهائية من فترة الإصدار الأولي. نتوقّع أن تكون واجهة برمجة التطبيقات ثابتة في الإصدار التجريبي، لذا يُرجى تخصيص بعض الوقت لإرسال ملاحظاتك بشأن أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة جميع الطرق والفئات
deprecated
السابقة، لا سيما الدالة الإنشائية التلقائيةWorker
. هذا تغيير قد يؤدي إلى تغيير في واجهة برمجة التطبيقات. - تمت إعادة تسمية "
NonBlockingWorker
" إلى "ListenableWorker
"، وهو الآن صف علني غير مخفي وجاهز للاستخدام.- تتيح
ListenableWorker
إمكانية الوصول إلى طريقة مجردة واحدة، وهيListenableFuture<Payload> onStartWork()
، والتي يتم استدعائها في سلسلة التعليمات الرئيسية. الأمر متروك لك لبدء العمل ومعالجته بشكل غير متزامن. عند الانتهاء، عليك تعديلListenableFuture
بشكل مناسب. يمكن الاطّلاع على عمليات تنفيذ المراجع لتطبيقاتListenableFuture
في حزمةFutures
فيalpha02
(انظر أدناه القسمWorkManager
). - يمتد
Worker
إلىListenableWorker
ويظل يعمل على النحو السابق، باستخدام طريقةResult doWork()
مجردة. - تم ترتيب بعض الطرق والأعضاء عشوائيًا من
Worker
إلىListenableWorker
. - سنوفّر قريبًا عمليات تطبيق مرجعية لـ
ListenableWorker
التي تستخدم الكوروتينات في لغة Kotlin (بعد طرح الإصدارات الثابتة) وRxJava2.
- تتيح
- تم دمج الواجهة
WorkerFactory
والتنفيذ الملموسDefaultWorkerFactory
في فئة مجردة تسمىWorkerFactory
. تضمن عملية التنفيذ أن يتم استدعاء السلوك التلقائي المستند إلى الانعكاس باعتباره جهدًا نهائيًا في أي مثيلاتWorkerFactory
أنشأها المستخدم. هذا تغيير قد يؤدي إلى عطل. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
وجميع الطرق ذات الصلة. تمت إضافةListenableFuture<Void>
كنوع الإرجاع للعديد من الطرق في واجهة برمجة التطبيقات. هذا تغيير قد يؤدي إلى تغيير في واجهة برمجة التطبيقات.- يمكنك الآن الوصول والمراقبة بشكل متزامن باستخدام
ListenableFuture
. على سبيل المثال، اعتادت دالةWorkManager.enqueue()
أن تعرضvoid
، وهي الآن تعرضListenableFuture<Void>
. يمكنك الاتصال بـListenableFuture.addListener(Runnable, Executor)
أوListenableFuture.get()
لتطبيق الرمز بعد اكتمال العملية. - تجدر الإشارة إلى أنّ
ListenableFuture
لا توضح ما إذا نجحت العملية أو تعذّر إتمامها، بل تشير فقط إلى اكتمالها. سيبقى عليك ربط طرق WorkManager لمعرفة هذه المعلومات. - ونتجاهل استدعاءات
cancel()
على هذه الكائنات، لأنّها مُربكة ويصعب التفكير فيها (هل تلغي العملية أم العمل الناتج عن ذلك؟). يندرج ذلك ضمن العقدFuture
. - للحفاظ على التماثل مع طُرق
getStatus*
المتزامنة، قدّمنا صيغًاListenableFuture
وأعدنا تسمية الصيغ الحالية التي عرضتLiveData
لكي تتضمّن بوضوح "LiveData" كجزء من الاسم (على سبيل المثال،getStatusesByIdLiveData(UUID)
). هذا تغيير قد يؤدي إلى أعطال في واجهة برمجة التطبيقات.
- يمكنك الآن الوصول والمراقبة بشكل متزامن باستخدام
إصلاح الأخطاء
- تم إصلاح المشكلة المعروفة من الإصدار alpha09 بشأن ملفات
androidx-annotations.pro
المكرّرة. يمكنك إزالة الحل البديل من ملاحظات الإصدار السابقة عن طريق حذفexclude 'META-INF/proguard/androidx-annotations.pro'
من ملف Grale. - تمت إضافة إعدادات Proguard للحفاظ على الدالة الإنشائية الجديدة لـ
Worker
. b/116296569 - إصلاح الخطأ
NullPointerException
المحتمل في حالة سباق كانت فيه قيمة العملREPLACE
d. b/116253486 وb/116677275 WorkContinuation.combine()
تقبل الآن واحدة أو أكثر منWorkContinuation
بدلاً من اثنين أو أكثر. b/117266752
كسر التغييرات في واجهة برمجة التطبيقات
- تمت إزالة جميع الطرق والفئات
deprecated
السابقة، لا سيما الدالة الإنشائية التلقائيةWorker
. - تم دمج الواجهة
WorkerFactory
والتنفيذ الملموسDefaultWorkerFactory
في فئة مجردة تسمىWorkerFactory
. - تمت إزالة إذنَي
WorkManager.synchronous()
وWorkContinuation.synchronous()
. - تعرض
WorkManager.getStatus*()
طريقة الآنListenableFuture
s.WorkManager.getStatus*LiveData()
العودة إلىLiveData
s.
الميزات:
سيتم طرح 1.0.0-alpha02
للعقد الآجل.
تغييرات واجهة برمجة التطبيقات
- يمكن للمطوّرين الآن استخدام الترميزَين
ResolvableFuture
وAbstractResolvableFuture
كعمليات تنفيذ بسيطة وبسيطة لـListenableFuture
.
8 تشرين الأول (أكتوبر) 2018
Room
تم إلغاء حجز الغرفة 2.1.0-alpha01
.
الميزات الجديدة
- FTS: تتيح الغرفة الآن الكيانات التي تحتوي على جدول FTS3 أو FTS4 للتعيين. يمكن الآن إضافة تعليقات توضيحية إلى الصفوف التي أُضيفت تعليقات توضيحية باستخدام
@Entity
باستخدام@Fts3
أو@Fts4
للإعلان عن صف يتضمّن جدول بحث يتضمّن النص الكامل للتعيين. تتوفّر خيارات FTS لمزيد من التخصيص من خلال طرق التعليق التوضيحي. b/62356416 - طرق العرض: تتيح الغرفة الآن الإعلان عن فئة كطلب بحث مخزَّن، وهو ما يُعرف أيضًا باسم طريقة عرض باستخدام التعليق التوضيحي @DatabaseView. b/67033276
- القيمة التلقائية: تتيح الغرفة الآن الإعلان عن الفئات التي تتضمّن تعليقات توضيحية ضمن القيمة التلقائية ككيانات وعناصر POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة
@PrimaryKey
و@ColumnInfo
و@Embedded
و@Relation
في الطرق المجرّدة للفئة التي تمت إضافة تعليقات توضيحية إليها. يجب أن تكون هذه التعليقات التوضيحية مصحوبةً بـ@CopyAnnotations
لكي تفهمها الغرفة بشكل صحيح. b/62408420 - دعم إضافي لأنواع إرجاع Rx: أصبحت طرق DAO التي تم التعليق عليها باستخدام
@Insert
أو@Delete
أو@Update
تتوافق الآن مع أنواع عرض RxCompletable
وSingle<T>
وMaybe<T>
. b/63317956 - الأنواع غير القابلة للتغيير في
@Relation
: كانت غرفة تطلب في السابق أن تكون حقول@Relation
التي تتضمّن تعليقات توضيحية قابلة للضبط ولكن يمكن الآن أن تكون مَعلمات إنشائية. enableMultiInstanceInvalidation
: هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لتفعيل إمكانية إبطالها في حالات متعددة من RoomDatabase باستخدام ملف قاعدة البيانات نفسه. تعمل آلية إبطال المثيلات المتعددة هذه أيضًا في عمليات متعددة. b/62334005fallbackToDestructiveMigrationOnDowngrade
: هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لإعادة إنشاء قاعدة البيانات تلقائيًا في حال الرجوع إلى إصدار سابق. b/110416954ignoredColumns
: هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي@Entity
يمكن استخدامها لإدراج الحقول التي تم تجاهلها حسب الاسم. يفيد هذا الإجراء لتجاهل الحقول الموروثة في أحد الكيانات. b/63522075
التغييرات في واجهات برمجة التطبيقات أو السلوك
- أصبح
mCallback
وmDatabase
فيRoomDatabase
الآن@Deprecated
وستتم إزالتهما في الإصدار الرئيسي التالي من الغرفة. b/76109329
إصلاح الأخطاء
- تم إصلاح مشكلتين حيث لا يتم استرداد Room بشكل صحيح من قاعدة بيانات تالفة أو عملية نقل بيانات غير صالحة أثناء التهيئة. b/111504749 وb/111519144
- ستستخدم الغرفة الآن الدالة الإنشائية الأساسية للغة Kotlin بشكلٍ صحيح في فئات البيانات لتجنُّب الحاجة إلى تعريف الحقول بأنّها
vars
. b/105769985
1 تشرين الأول (أكتوبر) 2018
تم إلغاء حجز الغرفة 2.0.0
بدون أي تغييرات من 2.0.0-rc01
.
تم إصدار 2.0.0
ترقيم الصفحات مع إصلاح خطأ واحد.
ترقيم الصفحات
إصلاح الأخطاء
- تم إصلاح العطل الذي قد يحدث عند التمرير السريع جدًا باستخدام
PositionalDataSource
والعناصر النائبة b/114635383.
21 أيلول (سبتمبر) 2018
تم إصدار دورة الحياة 2.0.0
مع إصلاح خطأ واحد من 2.0.0-rc01
في ViewModel.
مراحل النشاط
إصلاح الأخطاء
- تم إصلاح قاعدة Proguard على ViewModel التي أدت إلى إزالة الدوال الإنشائية بشكل غير صحيح b/112230489
20 أيلول (سبتمبر) 2018
التنقّل
تم إصدار شريط التنقّل 1.0.0-alpha06
مع إصلاحات للأخطاء وتغييرات في واجهة برمجة التطبيقات.
الميزات الجديدة
- تتوفّر الآن عمليات نقل العناصر المشتركة لوجهات "الأجزاء" و"النشاط" b/79665225. لمزيد من المعلومات، يُرجى الاطّلاع على تنفيذ التنقّل باستخدام مكوِّن بنية التنقل.
- سيؤدي اختيار عنصر في
NavigationView
إلى إغلاق أي بطاقة تحتوي على البطاقة السفلية b/112158843.
تغييرات واجهة برمجة التطبيقات
- تغيير مهم: تأخذ طريقة المستكشف
navigate()
الآن المعلَمةNavigator.Extras
. - طريقة
getGraph()
في NavController أصبحت الآنNonNull
b/112243286
إصلاح الأخطاء
- لم يعد بإمكان
NavigationUI.setupWithNavController()
تسريب المشاهدات إذا تم استخدامها مع المشاهدات من وجهات فردية b/111961977 - تم الآن تسمية المستكشف
onSaveState()
مرة واحدة فقط b/112627079
الوسيطات الآمنة
- تعمل فئات الاتجاهات في وجهة التنقل الآن على تمديد فئة الاتجاهات التابعة لها الرئيسية إذا كانت موجودة b/79871405
- تتضمّن فصول الاتجاهات وARgs الآن تطبيق
toString()
مفيدًا b/111843389
19 أيلول (سبتمبر) 2018
مدير العمل
تم إصدار 1.0.0-alpha09
من WorkManager مع إصلاحات للأخطاء وتحديثات للبنية الأساسية وتغييرات في واجهة برمجة التطبيقات.
مشكلة معروفة
إذا واجهتك المشكلة التالية: "تم العثور على أكثر من ملف واحد في المسار المستقل لنظام التشغيل 'meta-INF/proguard/androidx-annotations.pro'"، يُرجى وضع ما يلي في ملف Grale كحل بديل مؤقت أثناء حل المشكلة في الإصدار alpha10:
رائع
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة إصلاح آخر كان مطلوبًا للخطأ "100 وظيفة". b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب شروط السباق. b/114705286
- تم تفويض
ConstraintTrackingWorker.onStopped(boolean)
من المكالمات الواردة إلىWorker
الأساسية. b/114125093 - فرض الحد الأدنى الصحيح لمهلة الاستجابة لـ Firebase JobDispatcher b/113304626
- وتضمن سلاسل المحادثات المحسّنة عمليات داخلية للمكتبة.
- يُرجى تصحيح مشكلة محتمَلة متعلقة بإزالة
LiveData
مكرّرًا داخليًا.
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء مثيلات
Worker
خاصة بك في وقت التشغيل من خلال تحديدWorkerFactory
كجزء منWorkManager.Configuration
. المصنع الاحتياطي هوDefaultWorkerFactory
، والذي يطابق سلوك الإصدارات السابقة من WorkManager.- تم الآن وضع علامة على التركيبات التلقائية لـ
Worker
وNonBlockingWorker
على أنّها متوقّفة نهائيًا. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)
) وطلبsuper(Context, WorkerParameters)
، حيث ستزيل الإصدارات المستقبلية من WorkManager الدالة الإنشائية التلقائية.
- تم الآن وضع علامة على التركيبات التلقائية لـ
- لقد بدأنا في استخدام عنصر
ListenableFuture
الجديد داخليًا (خاليًا من تبعيات Guava). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيؤدي هذا التغيير إلى إظهارNonBlockingWorker
في النهاية. - يمكنك إضافة إمكانية تشغيل العمل المحدد زمنيًا في
TestDriver
من خلالTestDriver.setInitialDelayMet(UUID)
وTestDriver.setPeriodDelayMet(UUID)
. b/113360060
تغييرات قد تؤدي إلى أعطال
- تم إيقاف السمتَين الإنشائية التلقائيتَين
Worker
وNonBlockingWorker
نهائيًا. يُرجى الانتقال إلى الدالة الإنشائية الجديدة في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية الدالة الإنشائية الافتراضية.
27 آب (أغسطس) 2018
مدير العمل
تم إصدار 1.0.0-alpha08
من WorkManager مع إصلاحات الأخطاء.
إصلاح الأخطاء
- تتم الإشارة إلى مكوّنات WorkManager بوضوح على أنّها عند التشغيل المباشر غير مُدركة، ولذلك لا يتم تنشيطها أثناء التشغيل المباشر. سوف نوفِّر في المستقبل إصدارًا من WorkManager يوفّر إمكانية التشغيل المباشر. b/112665532
- تم إصلاح المشكلة المتمثلة في عدم تشغيل العمل الذي تمت إعادة توجيهه. b/112604021
- تم إصلاح العمل الدوري الذي لا يتم تنفيذه بشكل متكرر (يتعلق بالمشكلة أعلاه). b/112859683
- سياسات التراجع الممنوحة عندما تكون عملية التطبيق قيد التشغيل
- تم تصحيح رسائل الاستثناء في
Data
لتوضيح أنّ الحدّ الأقصى هو 10 كيلوبايت. - تم خفض القيمة القصوى من
Configuration.setMaxSchedulerLimit(int)
إلى 50 لمراعاة بعض وقت الاستجابة في اكتمال معالجةJobScheduler
. b/112817355
16 أغسطس 2018
مدير العمل
تم إصدار 1.0.0-alpha07
WorkManager مع إصلاحات للأخطاء وتغييرات بسيطة في واجهة برمجة التطبيقات.
إصلاح الأخطاء
- تم إصلاح استعلام SQL محتمل بحدود سلبية يمكن أن يعرض عددًا غير محدود من النتائج.
- يؤدي الآن العمل الذي انتهى تنفيذه إلى إلغاء جميع النسخ المعلّقة من هذا العمل في أدوات الجدولة الأخرى بشكل صحيح. أدى ذلك إلى تجاوز الحدّ الأقصى المسموح به لعدد الوظائف، وهو
JobScheduler
. b/111569265 - تم إصلاح
ConcurrentModificationException
فيConstraintTracker
. b/112272753 - تم تغيير التعليقات التوضيحية لنوع الإرجاع لـ
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229
تغييرات واجهة برمجة التطبيقات
- تم الآن تمديد الصف "
Worker
" لفئة جديدة، وهي "NonBlockingWorker
". ولا يؤثر ذلك في أي استخدام حالي. في المستقبل، ستصبحNonBlockingWorker
كيانًا متوافقًا بالكامل مع حلول سلاسل المحادثات المخصّصة. - تم تغيير التعليقات التوضيحية لنوع الإرجاع لـ
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229 - إضافات Kotlin: تم إيقاف
Map.toWorkData()
نهائيًا وتمّت إضافةworkDataOf(vararg Pair<String, Any?>)
من المستوى الأعلى بهدف تحقيق المزيد من الاتّساق مع واجهات برمجة التطبيقات الحالية.
10 آب (أغسطس) 2018
التنقّل
تم إصدار شريط التنقل 1.0.0-alpha05
مع إصلاحات الأخطاء.
إصلاح الأخطاء
- إصلاح الخطأ الذي يتسبب في حدوث سلوك غير صحيح لحزمة Backstack. b/111907708
- إصلاح خطأ في
equals()
بفئات Args التي تم إنشاؤها. b/111450897 - يجب إصلاح إخفاق الإصدار في Safe Args. b/109409713
- إصلاح إحالة ناجحة من معرّفات الموارد إلى أسماء JavaScript b/111602491
- إصلاح رسائل الخطأ بشأن قابلية القيم الفارغة في المكوِّن الإضافي Safe Args
- أضِف تعليقات توضيحية غير متوفّرة حول القيم الفارغة.
6 آب (أغسطس) 2018
إصدارات AndroidX من إصدار "مراحل النشاط" و"الغرفة" و"تتبُّع الصفحات" 2.0.0-rc01
لم يتم إجراء أي تغيير على جميع العناصر من 2.0.0-beta01
.
1 آب (أغسطس) 2018
مدير العمل
تم إصدار 1.0.0-alpha06
من WorkManager مع إصلاحات الأخطاء.
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل. b/111801342
- إصلاح خطأ يؤدي إلى عدم تشغيل "
PeriodicWork
" في الموعد المحدَّد أثناء استخدام وضع "القيلولة". b/111469837 - أصلح حالة السباق عند تتبُّع القيود التي تؤدي إلى تعطُّل
WorkManager
. googlecodelabs/android-workmanager/issues/56 - إنشاء
WorkRequest
فريدة عند استخدامWorkRequest.Builder#build()
. b/111408337 - يمكنك تفعيل استخدام
RescheduleReceiver
فقط عند الحاجة إلىWorkRequest
. b/111765853
24 تموز (يوليو) 2018
مدير العمل
تم إصدار 1.0.0-alpha05
من WorkManager مع إصلاحات للأخطاء المهمة وتغييرات التسجيل.
تغييرات واجهة برمجة التطبيقات
- تمت الآن إضافة تعليقات توضيحية إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. بدلاً من ذلك، إذا لم يتم إعداد مفرد المفرد بشكلٍ صحيح في حالات الإعداد اليدوي، ستعرض الطريقة الخطأIllegalStateException
. هذا تغيير جذري في واجهة برمجة التطبيقات - تمت إضافة واجهة برمجة تطبيقات جديدة،
Configuration.Builder.setMinimumLoggingLevel(int)
، يمكنها التحكّم في مستوى الإسهاب في WorkManager. ويسجّل WorkManager تلقائيًا الإصدارLog.INFO
والإصدارات الأحدث. - تم تغيير توقيع
Data.getString()
بحيث لا يأخذ قيمة تلقائية بعد ذلك (إنهnull
بشكل ضمني). هذا تغيير مؤقت في واجهة برمجة التطبيقات. - تم وضع علامة
@hide
على بعض الطرق اللازمة للاستخدام الداخلي فقط. ويشمل ذلك الدالة الإنشائيةConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
. هذا تغيير قد يؤدي إلى تغيير في واجهة برمجة التطبيقات.
إصلاح الأخطاء
- لم يعد WorkManager ينفّذ العمل أثناء الحالات المعروفة للنسخ الاحتياطي التلقائي. ربما أدى ذلك إلى وقوع عطل. b/110564377
- تم إصلاح جدولة
PeriodicWorkRequest
ثانية عند استخدامJobScheduler
. b/110798652 - تم حل مشكلة عدم تنفيذ
PeriodicWorkRequest
بشكل صحيح بعد قيلولة الجهاز. b/111469837 - تم إصلاح مشكلة التأخيرات الأولية عند استخدام Firebase JobDispatcher b/111141023.
- تم إصلاح بعض شروط السباق والمشكلات المتعلقة بالتوقيت.
- تم إخلاء
BroadcastReceiver
بشكل صحيح لم تعُد هناك حاجة إليها. - تحسين أداء إعادة جدولة عند إعادة تشغيل التطبيقات بعد فرض إغلاقها.
- تم السماح بطلب
TestScheduler.setAllConstraintsMet(UUID)
قبل إضافةWorkRequest
المحدّدة إلى قائمة الانتظار أو بعده. b/111238024
تغييرات قد تؤدي إلى أعطال
- تمت الآن إضافة تعليقات توضيحية إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. - تم تغيير توقيع
Data.getString()
بحيث لا يأخذ قيمة تلقائية بعد ذلك (إنهnull
ضمنيًا). - تم وضع علامة
@hide
على بعض الطرق اللازمة للاستخدام الداخلي فقط. ويشمل ذلك الدالة الإنشائيةConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
.
July 19, 2018
التنقّل
يحتوي شريط التنقّل 1.0.0-alpha04
والمكوِّن الإضافي Safe Args الإضافي المرتبط على عدد من التغييرات في واجهة برمجة التطبيقات والتغييرات في السلوك وإصلاحات الأخطاء.
التغييرات في واجهات برمجة التطبيقات أو السلوك
- سيضبط NavHostFragment دائمًا الجزء الحالي كجزء التنقل الأساسي، مع التأكد من فتح مدراء الأجزاء الفرعية قبل ظهور وحدة التحكّم الخارجية في NavHostFragment b/111345778
الوسيطات الآمنة
- تغيير مهم: تم تغيير
app:type
إلىapp:argType
لتجنُّب التعارضات مع المكتبات الأخرى مثل ConstraintLayout 2.0.0-alpha1 b/111110548 - يمكن الآن النقر على رسائل الخطأ الواردة من Safe Args b/111534438
- تؤكد فئات Args الآن أن سمات
NonNull
ليست فارغة b/111451769 - تمت إضافة تعليقات
NonNull
التوضيحية الإضافية إلى الفئات التي تم إنشاؤها بواسطة NavDirections وARgs b/111455455 b/111455456.
إصلاح الأخطاء
- تم إصلاح مشكلة زر الرجوع في النظام بعد الربط بصفحة معيّنة بوجهة جزء b/111515685
12 تموز (يوليو) 2018
التنقّل
يحتوي شريط التنقّل 1.0.0-alpha03
والمكوِّن الإضافي Safe Args الإضافي المرتبط على عدد من التغييرات في واجهة برمجة التطبيقات والتغييرات في السلوك وإصلاحات الأخطاء.
التغييرات في واجهات برمجة التطبيقات أو السلوك
- تمت إضافة طريقة NavigationUI.setupWithNavController لشريط الأدوات b/109868820
- تمت إضافة طريقة NavigationUI.setupWithNavController لـ CollapsingToolbarLayout b/110887183
- تعرض PopBackStack() الآن القيمة "false" عندما يكون المكدس الخلفي فارغًا أو عندما لا يكون رقم تعريف الوجهة المحدد في الحزمة الخلفية من b/110893637.
- يتجاهل FragmentNavigator الآن عمليات التنقل بعد حفظ FragmentManager للحالة، مع تجنب "لا يمكن تنفيذ هذا الإجراء بعد استثناءات onSaveInstanceState" b/110987825
الوسيطات الآمنة
- تغيير مهم: سيتم استبدال الأحرف غير الأبجدية الرقمية في اسم الإجراء وأسماء الوسيطات بحالة الجمل في أسماء طرق NavDirections ذات الصلة.
- على سبيل المثال، سيصبح
DemoController.index
setDemoControllerIndex
b/79995048. - على سبيل المثال، سيصبح
action_show_settings
actionShowSettings
b/79642240.
- على سبيل المثال، سيصبح
- تغيير قد يؤدي إلى عطل: تُعتبر الوسيطات الآن غير فارغة تلقائيًا. للسماح بالقيم الفارغة في السلسلة والوسيطات القابلة للفصل، أضِف
app:nullable="true"
b/79642307. - يمكنك الآن استخدام
app:type="long"
مع القيم التلقائية على شكل "123L" b/79563966. - أصبحت الوسيطات القابلة للدمج متاحة الآن، باستخدام اسم فئة مؤهل بالكامل لـ
app:type
. إنّ القيمة التلقائية الوحيدة المتوافقة هي"@null"
b/79563966. - تنفِّذ صفوف Args الآن
equals()
وhashCode()
b/79642246 - يمكن الآن تطبيق المكوّن الإضافي Safe Args على مشاريع المكتبة b/80036553
- يمكن الآن تطبيق المكوّن الإضافي Safe Args على مشاريع الميزات b/110011752
إصلاح الأخطاء
- تم إصلاح المشكلات عند التنقل أثناء طرق دورة حياة التجزئة b/109916080
- تم إصلاح المشاكل عند التنقل من خلال الرسوم البيانية المتداخلة عدة مرات b/110178671
- تم حل المشاكل عند استخدام
setPopUpTo
مع الوجهة الأولى في الرسم البياني b/109909461 - تم إصلاح المشكلة المتمثلة في تمرير جميع قيم
app:defaultValue
كسلاسل b/110710788 - يضيف الآن aapt2 المضمن مع المكوّن الإضافي Android Gradle Plugin 3.2 الإصدار التجريبي 01 قواعد احتفاظ بالبيانات لكل سمة
android:name
في ملفات التنقل بتنسيق XML b/79874119. - تم إصلاح تسرب الذاكرة عند استبدال FragmentNavigator التلقائي b/110900142
2 تموز (يوليو) 2018
إصدارات AndroidX من إصدار "مراحل النشاط" و"الغرفة" و"تتبُّع الصفحات" 2.0.0-beta01
مراحل النشاط
إصلاح الأخطاء
- إصلاح قاعدة مقدم خدمة LifecycleMonitorer للاحتفاظ بعمليات التنفيذ فقط، وليس الواجهات الفرعية b/71389427
- إصلاح قواعد برودة ViewModel للسماح بإخفاء مفاتيح فك التشفير وتقليص
Room
التغييرات في واجهات برمجة التطبيقات أو السلوك
- تمت إضافة
RoomDatabase.Builder.setQueryExecutor()
للسماح بتخصيص أماكن تنفيذ طلبات البحث. - تمت إضافة دعم RxJava2
Observable
. - عمليات تنفيذ قاعدة البيانات وقواعد البيانات التي تم إنشاؤها أصبحت نهائية الآن
إصلاح الأخطاء
- تحديد اسم الفئة/الحقل في الخطأ "لا يمكن العثور على قيمة للحقل" b/73334503
- إصلاح توافق RoomOpenHelper مع الأنظمة القديمة مع الإصدارات القديمة من Room b/110197391
ترقيم الصفحات
إصلاح الأخطاء
- اختفاء المحتوى الثابت في بعض حالات الإضافة (تم إيقاف العناصر النائبة، PositionalDataSource) b/80149146
- (تم إصداره بالفعل في
1.0.1
) الأعطال التي تم إصلاحها حيث يتعذّر علىPagedListAdapter
وAsyncPagedListDiffer
الإشارة إلى أحداث النقل. b/110711937
26 حزيران (يونيو) 2018
ترقيم الصفحات
تم إصدار 1.0.1
ترقيم الصفحات مع إصلاح خطأ واحد في runtime
. ننصح بشدة باستخدام السمة 1.0.1
لتحقيق الثبات. تم أيضًا إصدار 1.0.1
ترقيم الصفحات في RxJava2، وهو متطابق مع 1.0.0-rc1
.
إصلاح الأخطاء
- تم إصلاح الأعطال التي يتعذر فيها على
PagedListAdapter
وAsyncPagedListDiffer
الإشارة إلى أحداث النقل. b/110711937
مدير العمل
تم إصدار "1.0.0-alpha04
" من WorkManager.
إصلاح الأخطاء
تمت الآن إعادة جدولة
PeriodicWorkRequest
بشكلٍ صحيح عند استخدام عملية التنفيذ المستندة إلىAlarmManager
.إصلاح خطأ ANR محتمل عند إعادة جدولة جميع العاملين بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
تمت إضافة التعليقات التوضيحية بشأن قابلية القيم الفارغة إلى العديد من واجهات برمجة تطبيقات WorkManager. b/110344065
سجّل الاستثناءات غير المرصودة التي تحدث أثناء تنفيذ العامل. b/109900862
تم السماح بعمليات نقل قاعدة البيانات المدمرة في حال قررت العودة إلى إصدار أقدم من WorkManager. b/74633270
تم إصلاح تعطُّل نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا لا تحدث إلا إذا استخدمت تنسيق العلامة الضمنية نفسه بنفسك.
19 حزيران (يونيو) 2018
Room
تم إلغاء حجز الغرفة 1.1.1
. هذا الإصدار مماثل للغرفة 1.1.1-rc1
.
مدير العمل
تم إصدار "1.0.0-alpha03
" من WorkManager.
إصلاح الأخطاء
تم إصلاح شرط سباق في التنفيذ المستند إلى
AlarmManager
. b/80346526.تم إصلاح المهام المكرّرة عند استخدام "
JobScheduler
" بعد إعادة تشغيل الجهاز.تظل الوظائف التي تتضمن عمليات تشغيل معرّف الموارد المنتظم (URI) للمحتوى قائمة الآن عبر عمليات إعادة التشغيل. b/80234744
التعديلات على المستندات: b/109827628 وb/109758949 وb/80230748
تم إصلاح عطل يحدث عند إعادة إضافة
WorkRequest
إلى قائمة الانتظار. b/109572353.تم إصلاح تحذيرات برنامج تجميع Kotlin عند استخدام تبعية
work-runtime-ktx
.يستخدم تطبيق WorkManager الآن الإصدار
1.1.1-rc1
منRoom
.
تغييرات واجهة برمجة التطبيقات
تمت إضافة
getStatusesSync()
، وهو الإصدار المتزامن منWorkContinuation.getStatuses()
.يستطيع "
Worker
" التمييز بين عملية الإلغاء التي يجريها المستخدم والإيقاف المؤقت الذي يطلبه نظام التشغيل. يعرضWorker.isStopped()
قيمةtrue
في حال طلب أي نوع من التوقف.Worker.isCancelled()
يعرضtrue
عندما يتم إلغاء العمل صراحةً. b/79632247إضافة دعم لـ JobParameters#getNetwork() على واجهة برمجة التطبيقات 28. تم الكشف عن ذلك من خلال
Worker.getNetwork()
.تمت إضافة
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
لتتمكّن من فرض عدد المهام التي يمكن إرسالها إلىJobScheduler
أوAlarmManager
. يساعد هذا الإجراء في منعWorkManager
من أخذ جميع خاناتJobScheduler
المتاحة.تمت إضافة
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
التي تساعد في تحديد مجموعة من أرقام تعريف الوظائفJobScheduler
الآمنة لاستخدامWorkManager
. b/79996760تعرض
Worker.getRunAttemptCount()
عدد عمليات التشغيل الحالية لـWorker
محددة. b/79716516يتيح لك
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
إضافة عناصرPeriodicWorkRequest
فريدة إلى قائمة الانتظار. b/79600647يلغي
WorkManager.cancelAllWork()
جميعWorker
. يمكن للمكتبات التي تعتمد علىWorkManager
الاستعلام عن وقت آخر طلب بحث لهذه الطريقة وذلك باستخدامWorkManager.getLastCancelAllTimeMillis()
لتنظيف إضافي للحالة الداخلية.تمت إضافة
WorkManager.pruneWork()
لإزالة المهام المكتملة من قاعدة البيانات الداخلية. b/79950952، b/109710758
التغييرات في السلوك
- تمت إضافة علامة ضمنية لكل
WorkRequest
، وهو اسم الفئة المؤهل بالكامل لفئةWorker
. يتيح ذلك إمكانية إزالةWorkRequest
بدون استخدامtag
أو عندما لا تكونid
متاحة. b/109572351
تغييرات قد تؤدي إلى أعطال
تمت إعادة تسمية
Worker.WorkerResult
إلىWorker.Result
.تتضمّن
Worker.onStopped
الآن معلَمةisCancelled
إضافية تم ضبطها علىtrue
بعد إلغاءWorker
بشكل صريح.
7 حزيران (يونيو) 2018
تم تحرير شريط التنقل 1.0.0-alpha02
.
التنقّل
التغييرات في السلوك
يستخدم تطبيق
FragmentNavigator
الآنsetReorderingAllowed(true)
. b/109826220الانتقال الآن: URLفك ترميز الوسيطات المُحلّلة من عناوين URL لروابط صفحات التطبيق. b/79982454
إصلاح الأخطاء
تم إصلاح
IllegalStateException
عند استدعاء الانتقال من طرق مراحل نشاط التجزئة. b/79632233يعتمد التنقل الآن على الإصدار 27.1.1 من Support Library لإصلاح الوميض عند استخدام الرسوم المتحركة. b/80160903
تم إصلاح
IllegalArgumentException
عند استخدام defaultNavHost="true" كجزء ثانوي. b/79656847تم إصلاح
StackOverflowError
عند استخدام NavDeepLinkBuilder. b/109653065تم إصلاح
IllegalArgumentException
عند الرجوع إلى رسم بياني متداخل. b/80453447تم إصلاح مشكلة تداخل الأجزاء عند استخدام
launchSingleTop
. b/79407969ينشئ التنقّل الآن المكدس الخلفي الاصطناعي الصحيح للرسومات البيانية المتداخلة. b/79734195
ستميّز واجهة MapsUI الآن العنصر الصحيح عند استخدام رسم بياني مدمج كدالة
MenuItem
. b/109675998
تغييرات واجهة برمجة التطبيقات
تم إيقاف السمة
clearTask
للإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptions
. b/80338878تم إيقاف السمة
launchDocument
للإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptions
نهائيًا. b/109806636
24 أيار (مايو) 2018
تم إصدار "1.0.0-alpha02
" من WorkManager.
مدير العمل
إصلاح الأخطاء
تم إصلاح
NullPointerException
فيState.isFinished()
. b/79550068تم إصلاح مشكلة تسبّبت في إعادة جدولة
Worker
فيApplication.onCreate()
. b/79660657تم إصلاح المشكلة المتمثلة في إمكانية جدولة عمل أكثر مما يسمح به نظام التشغيل. b/79497378
تم نقل عملية تنظيف عمليات قفل التنشيط المرتبطة بـ
Worker
إلى سلسلة التعليمات في الخلفية.أصبحت عملية تنفيذ
AlarmManager
الآن تتم إزالتها بشكل صحيح عند اكتمال جميع الأعمال المعلّقة.تم إصلاح استعلامات SQL لتنظيف لغة الاستعلامات البنيوية (SQL) التي أثرت في اللغات غير الإنجليزية. b/80065360
تمت إضافة دعم
float
فيData
. b/79443878تعرض
Data.Builder.putAll()
الآن مثيلاً منBuilder
. b/79699162المزيد من ملفات javadoc والإصلاحات في الوثائق. b/79691663
تغييرات واجهة برمجة التطبيقات
بإمكان "
Worker
" التفاعل مع إيقاف الجهاز. يمكن استخدامWorker.isStopped()
للتحقق مما إذا تم إيقافWorker
. يمكن استخدامWorker.onStopped()
لإجراء عمليات تنظيف بسيطة.تعرض واجهة برمجة التطبيقات
Worker.getTags()
APISet
من العلامات المرتبطة بـWorker
.تمت إضافة عمليات تحميل
javax.time.Duration
الزائدة لواجهات برمجة التطبيقات التي تستغرق مجموعة من المدة وTimeUnit
. هذا يحميه@RequiresApi(26)
.تم نقل
WorkManager
من الإضافات من حزمةandroidx.work.ktx
إلى الحزمةandroidx.work
. تم إيقاف الإضافات القديمة نهائيًا وستتم إزالتها في إصدار مستقبلي.تم إيقاف
Configuration.withExecutor()
نهائيًا. يمكنك استخدامConfiguration.setExecutor()
كبديل.
16 أيار (مايو) 2018
تم إلغاء حجز رحلات RxJava2 1.0.0-rc1
والغرفة 1.1.1-rc1
. وننصحك
بشدة باستخدام الغرفة 1.1.1-rc1
بدلاً من 1.1.0
في حال كنت تستخدم عمليات نقل البيانات.
Room
تم إصلاح الخطأ المتمثل في عدم تعامل الغرفة مع تهيئة ما بعد نقل البيانات بشكل صحيح b/79362399
ترقيم الصفحات
سيتم نقل صفحة rxjava2
إلى إصدار الصفحة المرشحة بدون أي تغييرات من الإصدار الأولي.
8 أيار (مايو) 2018
الانتقال من صفحة إلى الإصدار 1.0 والإصدار الأولي من "التنقل" و"الإصدار الأولي من WorkManager" و"الغرفة 1.1" وAndroidX
تم إلغاء نقل الصفحات 1.0.0
والغرفة 1.1.0
،
بالإضافة إلى الإصدارات الأولية لمكوِّنين جديدين للبنية، وهما التنقل وWorkManager.
لم تطرأ أي تغييرات على الانتقالات والغرفة منذ آخر إصدارات المرشّحين للإصدار.
المكتبة الجديدة: التنقل
توفر التنقل إطار عمل لإنشاء التنقل
داخل التطبيق. هذا الإصدار الأولي هو 1.0.0-alpha01
.
المكتبة الجديدة: WorkManager
يعمل WorkManager على تبسيط عملية الجدولة وتنفيذ
العمل المضمون والمراعي لقيود في الخلفية. هذا الإصدار الأولي هو
1.0.0-alpha01
.
AndroidX
سيتم نقل المكوّنات الهندسية لتصبح جزءًا من AndroidX، بما في ذلك أسماء الحِزم المعدّلة وأسماء العناصر والتبعيات على مكتبات AndroidX الأخرى.
ويتم إصدارها ضمن الإصدار 2.0.0-alpha1
لاستخدامها مع مكتبات
AndroidX الأخرى.
إضافات Kotlin
تتضمّن كل من ViewModel وReactiveStreams وSqlite (المعروف سابقًا باسم "قاعدة البيانات" في الغرفة) مكتبات إضافات لغة البرمجة Kotlin كجزء من إصدار الإصدار الأولي من AndroidX. بالإضافة إلى ذلك، تتضمن التنقل وWorkManager وحدات -ktx. ويمكن العثور على كل وحدة من وحدات الإضافات هذه في إضافة المكونات.
2 أيار (مايو) 2018
- المرشح لإلغاء حجز الغرفة 1.1.0
- تم إلغاء حجز الغرفة
1.1.0-rc1
.
إصلاح الأخطاء
- الغرفة متوافقة الآن مع
1.2.40
في Kotlin. b/78328708
19 نيسان (أبريل) 2018
المرشّح لإصدار مستند ترتيب الصفحات
تم إلغاء حجز صفحة 1.0.0-rc1
والغرفة 1.1.0-beta3
.
ترقيم الصفحات
ليس لدينا أي مشاكل معروفة أخرى أو ميزات جديدة مُجدوَلة في إصدار 1.0.0
من صفحات الصفحات. يُرجى ترقية مشاريعك لاستخدام 1.0.0-rc1
ومساعدتنا
في اختباره حتى يتسنى لنا شحن 1.0.0
صلب.
لم يتم إجراء أي تغييرات على هذا الإصدار، لأنّه مماثل للإصدار 1.0.0-beta1
.
Room
إصلاح الأخطاء
- إصلاح خطأ التحويل البرمجي عندما يشير طلب POJO في Kotlin إلى كيان علاقي تم تحديده في Java b/78199923
5 نيسان (أبريل) 2018
تم إلغاء حجز الغرفة 1.1.0-beta2
والتنقل في الصفحات 1.0.0-beta1
و1.0.0-alpha1
رقم تسجيل الصفحات لـ RxJava.
ستكون ميزة الانتقال من صفحة إلى أخرى في إصدار تجريبي لفترة قصيرة قبل التقدّم لإصدار المرشح.
ولا نخطط لإجراء المزيد من التغييرات في واجهة برمجة التطبيقات في الإصدار Paging 1.0
، والشريط الخاص بأي تغييرات في واجهة برمجة التطبيقات مرتفع جدًا.
تم إطلاق دعم Alpha RxJava2 لميزة "نقل الصفحات" كوحدة اختيارية منفصلة (android.arch.paging:rxjava2:1.0.0-alpha1
)
وسيتم تعديلها مؤقتًا في إصدار منفصل إلى أن تستقرّ.
توفّر هذه المكتبة الجديدة بديل RxJava2 لـ LivePagedListBuilder
، قادرة على إنشاء Observable
وFlowable
، وتأخذ Scheduler
بدلاً من Executor
s:
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 للمكوّنات الرئيسية.إصلاح سلوك عدم الصحّة في برامج تضمين
DataSource
الداخلية (يُستخدَم لتنفيذDataSource.map
، بالإضافة إلى تحميلPositionalDataSource
المتوقّف عن العنصر النائب) b/77237534
Room
إصلاح الأخطاء
تم إصلاح خطأ فادح في عمليات تنفيذ Rx
Single
وMaybe
في الغرفة حيث قد يؤدي إلى إعادة تدوير طلب البحث مسبقًا، مما يتسبب في حدوث مشاكل إذا أضفت أكثر من مراقب واحد إلى الأخطاءSingle
أوMaybe
المعروضة. b/76031240لن تعمل الدالة RoomDatabase.clearAllTables على
VACUUM
قاعدة البيانات إذا تم استدعائها داخل معاملة. b/77235565
21 آذار (مارس) 2018
تم إلغاء حجز الغرفة 1.1.0-beta1
وخطوات الانتقال إلى 1.0.0-alpha7
ودورات الحياة 1.1.1
.
Room
تغييرات واجهة برمجة التطبيقات
- استنادًا إلى الملاحظات والآراء بشأن مراجعة واجهة برمجة التطبيقات، لم يعُد
@RawQuery
يقبل تمريرString
باعتباره مَعلمة طلب البحث. تحتاج إلى استخدام SupportSQLiteQuery. (يُرجى الاطّلاع على SimpleSQLiteQuery لإنشاء مثيل SupportSQLiteQuery بسهولة باستخدام الوسيطة). - تقبل الطريقة fallbackToDestructive MigrationFrom في RoomDatabase.Builder اسم
vararg int
بدلاً منvararg Integer
.
إصلاح الأخطاء
يحاول RoomDatabase.clearAllTables الآن إعادة مسافة إلى نظام التشغيل من خلال ضبط نقطة تفتيش WAL و
VACUUM
نقل قاعدة البيانات.تقبل
@RawQuery
الآن أي Pojo للسمةobservedEntities
ما دامت Pojo تشير إلى كيان واحد أو أكثر من خلال حقولEmbedded
أوRelation
s. b/74041772الانتقال من صفحة إلى أخرى: أصبح تنفيذ DataSource في الغرفة يعالج بشكل صحيح التبعيات متعددة الجداول (مثل العلاقات وضمات). في السابق، كانت لا تنجح في ظهور نتائج جديدة، أو قد تفشل في تجميعها. b/74128314
دورات الحياة
تغيير صغير واحد فقط: تم نقل android.arch.core.util.Function
من arch:runtime
إلى arch:common
. يسمح هذا الإجراء باستخدامها بدون الاعتمادية على وقت التشغيل، مثلاً في paging:common
أدناه.
إنّ lifecycle:common
هي تابعة لـ lifecycle:runtime
، لذلك لن يؤثر هذا التغيير في lifecycle:runtime
مباشرةً، بل يؤثر فقط في الوحدات التي تعتمد مباشرةً على lifecycle:common
، كما هو الحال في عملية التقسيم إلى صفحات.
ترقيم الصفحات
تم إطلاق ميزة الانتقال من 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.factor
- تسمح لك
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
إذا تم تفعيل العناصر النائبة وكان الحجم الإجمالي مضاعفًا دقيقًا لحجم الصفحة.
2 آذار (مارس) 2018
تم إلغاء حجز الغرفة 1.1.0-alpha3
. هذا هو آخر إصدار أولي مخطط له
للغرفة 1.1.0
.
تغييرات واجهة برمجة التطبيقات
الطريقتان
addObserver
وremoveObserver
التابعتان لـ InvalidationTracker متزامنتان الآن ويجب استدعاؤهما في سلسلة محادثات لا تنتمي إلى واجهة المستخدم. هذا يمنع بعض حالات السباق أثناء مراقبة الجداول.هناك طريقة
clearAllTables()
جديدة في الفئة RoomDatabase والتي ستقتطع جميع محتوى الجدول. b/63807999تحتوي
SupportSQLiteQuery
الآن على الطريقةgetArgCount()
التي تعرض عدد معلمات طلب البحث. b/67038952
إصلاح الأخطاء
@RawQuery
متوافق الآن بشكل صحيح مع طلبات بحث الصفحة. b/72600425أصبح بإمكان Room الآن تسمية فئات
Dao
بشكل صحيح لتجنُّب تعارض الأسماء عندما تكون واجهتَان أو أكثر من واجهاتDao
عبارة عن فئات داخلية في الحزمة نفسها ولها الاسم نفسه. b/73536380يتم تحليل أنواع الحقول العامة في
Pojo
بشكل صحيح كعضو في الفئة الموسّعة. b/73534868يتم الآن تحليل مَعلمات طلب البحث في واجهات
Dao
المكتسَبة من أدوات التبعية بشكل صحيح. b/68118746إنّ طلبات البحث التي يتم إنشاؤها لـ
@Relation
تتجاوز الآن أسماء الحقول بشكل صحيح. b/70925483
27 شباط (فبراير) 2018
تم إطلاق ميزة الانتقال إلى صفحات 1.0.0-alpha6
إلى جانب الإصدار 27.1.0 من Support Library.
تم نقل ListAdapter
وبعض الصفوف ذات الصلة من "مكتبة تسجيل الصفحات" مباشرةً إلى Recyclerview، بالإضافة إلى بعض عمليات إعادة التسمية لتسهيل وظيفة بعض الصفوف. من المرجّح أن يكون هذا الإصدار الأولي من التقسيم على صفحات هو الأخير الذي يتضمّن تغييرات كبيرة قد تؤدي إلى أعطال في واجهة برمجة التطبيقات.
تغييرات واجهة برمجة التطبيقات
- الصفوف التي تم نقلها إلى recyclerview-v7:
ListAdapter
- تمت إعادة تسمية الصفوف ونقلها إلى recyclerview-v7:
ListAdapterHelper
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->DiffUtil.ItemCallback
- الصفوف التي تمت إعادة تسميتها في وقت تشغيل الصفحات:
PagedListAdapterHelper
->AsyncPagedListDiffer
كانت الصفوف التي تم نقلها مفيدة إلى جانب RecyclerView، بشكل مستقل عن مكتبة تسجيل الصفحات. ويعني هذا أنّه يمكن استخدامها بدون الاعتماد على الإصدار الأولي لميزة "تتبُّع الصفحات"، ولكن يجب أيضًا ترقية التطبيقات التي تستخدم ميزة "تسجيل الدخول إلى صفحات" إلى الإصدار ألفا 6 والإصدار 27.1.0 من "مكتبة الدعم" في الوقت نفسه.
** دليل نقل البيانات للإصدار Alpha6 من الانتقال إلى صفحة: **
- تعديل التبعيات المتعلّقة بالتقسيم إلى صفحات وإعادة التدوير إلى
android.arch.paging:runtime:1.0.0-alpha6
وcom.android.support:recyclerview-v7:27.1.0
- يجب تنفيذ ذلك في الوقت نفسه، نظرًا لأنه تم نقل ListAdapter من Paging إلى RecyclerView
- تعديل أي مراجع لـ
ListAdapterHelper
لتصبحAsyncListDiffer
- تمت إزالة
getItem(index)
/getItemCount()
لصالح نمط استدعاءgetCurrentList().getItem(index)
وgetCurrentList().size()
، وهما أكثر وضوحًا.
- تمت إزالة
- تعديل أي مراجع لـ
ListAdapterConfig
إلىAsyncDifferConfig
- تعديل أي مراجع لـ
DiffCallback
إلىDiffUtil.IttemCallback
- تعديل أي مراجع لـ
PagedListAdapterHelper
إلىAsyncPagedListDiffer
- تعديل المراجع الخاصة بـ
setList()
إلىsubmitList()
- تمت إعادة تسميتها لتوضيح الطبيعة غير المتزامنة لاختلاف القائمة
إصلاح الأخطاء
- إصلاح تمرير الموضع المبدئي غير الصحيح للتحميل الأولي عند إيقاف العناصر النائبة. b/73513780
15 شباط (فبراير) 2018
تم إلغاء حجز الغرفة 1.1.0-alpha2
.
الميزات الجديدة
تتيح الغرفة الآن فتح قاعدة البيانات في وضع تسجيل الكتابة المسبقة. في هذا الوضع، لن تحظر كتاباتك بعد الآن طلبات البحث للقراءة. على الرغم من أنّه يستهلك قدرًا أكبر من الذاكرة (بسبب تعدد الاتصالات)، عادةً ما يكون هذا الوضع أسرع. وفقًا للإعدادات التلقائية، سيستخدم تطبيق Room WAL إذا كان الجهاز يعمل بنظام التشغيل
API 16
أو إصدار أحدث، وليس جهازًا بسعة ذاكرة منخفضة. ويمكنك التحكّم في هذا السلوك باستخدام طريقةsetJournalMode()
علىRoomDatabase.Builder
. b/67757002دعم Guava: تتيح خدمة Room الآن عرض محتوى Guava
Optional<T>
أوListenableFuture<T>
في طلبات البحثDAO
. لاستخدامListenableFuture<T>
، عليك استيراد عنصرguava
من الغرفة (android.arch.persistence.room:guava:1.1.0-alpha2
).تتيح الغرفة الآن عرض
java.util.Optional<T>
منDAO
طلب بحث.أصبحت طرق الواجهة مع عمليات التنفيذ التلقائية متاحة الآن في طرق
@Transaction
ضمنDAO
فئة. ويمكن استخدام هذه الميزة معJava 8
وKotlin
. b/72416735
إصلاح الأخطاء
لن تتسبب المنشئات التي تتضمّن
@Relation
في حدوث خطأ في التجميع إذا كانت هناك دالة إنشاء أخرى يمكن استخدامها. b/72884434يتم الآن تخطي أسماء الجداول التي تم تجاوزها باستخدام
'
في طرق@Query
بشكل صحيح لأداة تتبع الإبطال. b/72366965تستخدم Room الآن تعليقات
@Metadata
التوضيحية بلغة Kotlin لقراءة بنية الصف أثناء معالجة التعليقات التوضيحية. وهذا يعني أنه حتى في حالة توريث بوجو من التبعية، يمكن قراءة أسماء معلمات الدالة الإنشائية بشكلٍ صحيح. b/67181813تم إصلاح مشكلة العثور على مسارات الانتقال إلى إصدار سابق. b/72153525
يتم الآن التعامل مع أنواع الأعمدة غير التلقائية بشكل صحيح عند نقل البيانات من قاعدة بيانات حالية إلى الغرفة. b/71953987
تعالج Room الآن بشكل صحيح حقول
boolean?
المستمرة في فئات Kotlin. b/72786402
22 كانون الثاني (يناير) 2018
تم إلغاء دورات الحياة 1.1.0
، والغرفة 1.1.0-alpha1
، و1.0.0-alpha5
صفحة الأسعار.
دورة الحياة 1.1.0
التغييرات في حزمة المحتوى
تتوفر الآن تبعيات جديدة أصغر بكثير:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
تغييرات واجهة برمجة التطبيقات
- تمّت الآن إزالة السمتَين
LifecycleActivity
وLifecycleFragment
المتوقفتَين نهائيًا. يُرجى استخدامFragmentActivity
أوAppCompatActivity
أو دعمFragment
. - تمت إضافة
@NonNull
تعليقات توضيحية إلىViewModelProviders
وViewModelStores
. - تم إيقاف الدالة الإنشائية
ViewModelProviders
. يُرجى استخدام طرقها الثابتة مباشرةً - تم إيقاف
ViewModelProviders.DefaultFactory
نهائيًا - يُرجى استخدامViewModelProvider.AndroidViewModelFactory
- تمت إضافة الطريقة
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
الثابتة لاسترداد قيمةFactory
ثابتة مناسبة لإنشاء مثيلاتViewModel
وAndroidViewModel
.
الغرفة 1.1.0-alpha1
الميزات الجديدة
RawQuery
: تسمح واجهة برمجة التطبيقات الجديدة هذه لطرق@Dao
بتلقّي لغة الاستعلامات البنيوية (SQL) كمَعلمة طلب بحث b/62103290، b/71458963fallBackToDestructiveMigrationsFrom
: تتيح واجهة برمجة التطبيقات الجديدة هذه فيRoomDatabase.Builder
إمكانية تحكُّم أكثر دقة في عمليات بدء عمليات نقل البيانات التخريبية لإصدارات المخطط (مقارنةً بـ fallbackToDestructive Migration) b/64989640- لا تتوافق غرفة الآن إلا مع واجهات برمجة التطبيقات الأحدث (الإصدار alpha-4 والإصدارات الأحدث) التي لن تتيح استخدام الإصدار
LivePagedListProvider
المتوقّف نهائيًا. لاستخدام الإصدار الأولي الجديد من الغرفة، عليك استخدام التقسيم على صفحاتalpha-4
أو الإصدارات الأحدث، والتبديل منLivePagedListProvider
إلىLivePagedListBuilder
إذا لم يسبق لك ذلك.
إصلاح الأخطاء
- توافق محسَّن مع أنواع Kotlin Kapt. b/69164099
- لا يؤدي ترتيب الحقول إلى إلغاء صلاحية المخطط بعد الآن. b/64290754
الانتقال من إصدار 1.0.0-alpha5
إصلاح الأخطاء
- إصلاح تحميل الصفحة عند إيقاف العناصر النائبة b/70573345
- تسجيل إضافي لتتبُّع الخطأ b/70360195 (وإصلاح مشكلة من جانب الغرفة)
- نموذج رمز JavaScript لإصلاح b/70411933 وb/71467637
11 كانون الأول (ديسمبر) 2017
تم إلغاء حجز صفحة alpha4-1
في صفحة النتائج. هذا إصدار صغير لإصلاح الأخطاء للإصدار ألفا 4 من الصفحة.
إصلاح الأخطاء
- لا تتحقق من معلَمات رد الاتصال بحثًا عن مصادر بيانات غير صالحة. b/70353706، b/70360195
7 كانون الأول (ديسمبر) 2017
تم إطلاق alpha4
ترقيم الصفحات، مع إدخال تغييرات وإضافة كبيرة، ومعظمها، شبكة الاستهداف، وحالات استخدام الشبكة وقاعدة البيانات.
تغييرات واجهة برمجة التطبيقات
أصبحت
DataSource
الآن واجهة برمجة تطبيقات غير متزامنة، لتسهيل عملية الانتقال من صفحة إلى أخرى مباشرةً من الشبكة:- نقطة إدخال واحدة للحجم المبدئي والبيانات
- تتيح إعادة محاولة الشبكة من خلال التمسك بمعاودة الاتصال والإرسال لاحقًا.
- تتيح استدعاءات Threadsafe التحميل غير المتزامن لإنشاء
PagedList
يدعم شبكة واحدة في سلسلة محادثات واجهة المستخدم. - سلوك خطأ أوضح في ما يتعلق بمَعلمات التحميل المبدئية
تمت إعادة تسمية الدالة
TiledDataSource
لتصبحPositionalDataSource
لتعكس الفهرسة المستندة إلى الموضع، وحقيقة أنها لا تتجانب عند إيقاف العناصر النائبة.تمت إضافة
PageKeyedDataSource
لإتاحة الرموز المميزة التالية والسابقة المضمَّنة في عمليات تحميل صفحات الشبكة. تمت إعادة تسميةKeyedDataSource
إلىItemKeyedDataSource
لتوضيح الفرق.تم استبدال
LivePagedListBuilder
وDataSource.Factory
بـLivePagedListProvider
. توفر منصة الإنشاء نفس الإمكانية مع المزيد من التخصيص والإعدادات الافتراضية الأكثر بساطة. يسمح المصنع باستخدام رمز الجيلDataSource
بالبقاء مستقلاً عنLiveData
.تمت إضافة
PagedList.BoundaryCallback
لحالة استخدام قاعدة البيانات والشبكة.تستخدم دالة الإنشاء
PagedList.Builder
DataSource
+PagedList.Config
، وهي الآن أكثر تشابهًا معLivePagedListBuilder
، وتسمح بعامل التشغيل الماسي في لغة Java أو الأنواع المستنتَجة في Kotlin.تمت إضافة
PagedList.getConfig()
، وPagedList.Config
لديه الآن خصائص أعضاء عامة.لم يعُد من المتوقّع أن يتم عكس النتائج من قِبل "
KeyedDataSource.loadBefore()
".تمت إضافة
PagedListAdapter.onCurrentListChanged()
للاطّلاع على التعديلات التي يتم عرضها على PagedList.
إصلاح الأخطاء
- تم إصلاح IndexOutOfBoundsException في PagedListAdapter(المساعد) b/67883658
من 1.0.0 إلى 6 تشرين الثاني (نوفمبر) 2017
جميع المكوّنات الرئيسية (باستثناء عملية نقل البيانات) أصبحت الآن 1.0.0
. هذا الإصدار هو نفسه
الإصدار rc1
، باستثناء تغيير واحد تم إجراؤه على مكتبة reactivestreams
.
إصلاح الأخطاء
- تنفّذ
LiveDataReactiveStreams
الآن مواصفات ساحات المشاركات التفاعلية بشكل صحيح. b/67999342
مرشح للإصدار - 18 تشرين الأول (أكتوبر) 2017
تم تغيير إعدادات جميع العناصر الرئيسية (باستثناء عملية نقل البيانات) إلى 1.0.0-rc1
الآن.
ليس لدينا أي مشاكل معروفة أخرى أو ميزات جديدة مجدولة في
إصدار 1.0.0
. يُرجى ترقية مشاريعك لاستخدام 1.0.0-rc1
ومساعدتنا في
اختباره حتى نتمكن من شحن صخرة 1.0.0
.
تغيير السلوك
- مع هذا الإصدار، تم إرسال
Lifecycle.Event#ON_STOP
الآن عند تسميةonSaveInstanceState
(في السابق، تم وضع علامةCREATED
عليها فقط بدون إرسالON_STOP
). يمكنك الاطّلاع على مزيد من المعلومات حول هذا في مستندات دورات الحياة.
إصلاح الأخطاء
الغرفة:
- تعتمد الغرفة الآن على أحدث أداة بصرية تعمل على حلّ مشاكل
OutOfMemory
أثناء التجميع. b/62473121 - يمكن الآن إضافة تعليقات توضيحية من طُرق
Query
باستخدام@Transaction
. يمكنك الاطّلاع على المستندات المرجعية على@Transaction
للحصول على التفاصيل. b/65112315 - تمت إزالة فئة
StringUtil
في الغرفة من واجهة برمجة التطبيقات العامة (لم يتم استخدامها مطلقًا كواجهة برمجة تطبيقات عامة).
- تعتمد الغرفة الآن على أحدث أداة بصرية تعمل على حلّ مشاكل
دورات الحياة:
يعمل
LiveData
بشكل صحيح في حال تناول النشاط جزئيًا في واجهة برمجة التطبيقات < 24. b/65665621يتم الآن استدعاء طُرق
OnLifecycleEvent
في الفئات الرئيسية بشكل صحيح أو تتم طباعة تحذير أثناء التحويل البرمجي إذا لم يكن ذلك ممكنًا. b/63474615تحتفظ lifecycle الآن بـ
WeakReference
إلى LifecycleOwner لتجنب تسريب LifecycleOwner إذا تم الاحتفاظ بدورة الحياة في الذاكرة لفترة أطول من المعتاد (هذا مجرد تدبير احترازي، يجب أن تحرص على عدم تسربLifecycle
).
9 تشرين الأول (أكتوبر) 2017
تم إلغاء إمكانية حجز الصفحات alpha-3
، ما يجعلها متوافقة مع إصدار beta 2
لدورات الحياة والغرفة.
إصلاح الأخطاء
- مستندات محسَّنة بشأن الانتقال إلى صفحات
5 تشرين الأول (أكتوبر) 2017
تم تغيير إعدادات جميع العناصر الرئيسية (باستثناء عملية نقل البيانات) إلى beta 2
الآن.
لا يتوفّر إصدار جديد من ميزة "التبديل إلى الصفحات" في هذا الإصدار.
إصلاح الأخطاء
دورات الحياة:
LiveDataReactiveStreams
الآن يلغي اشتراك الناشر المصدر بشكل صحيح عندما يكونLiveData
غير نشط. b/62609183- يتم نشر أحداث مراحل النشاط بشكل صحيح في الصفوف الرئيسية عندما تكون الفئة الرئيسية من وحدة أخرى. b/63474615
- تعالج LiveData المراقبين بطريقة ملائمة عند إلغاء اشتراكهم خلال عملية إنشاء طلب الاشتراك. b/66337741
تتوفر الآن
FullLifecycleObserver
لأداة لغة Java 8 في شجرة التبعية. b/66525578للحصول على Proguard، يُرجى إضافة السطور التالية إلى ملف proguard. (لن يكون هذا ضروريًا عند شحن 1.0.0)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
الغرفة:
- تطبع Room الآن رسالة خطأ في وقت التجميع عندما تحتوي طريقة Pojo التي تم عرضها في
طريقة
@Query
على الحقل@NonNull
الذي لا يتطابق مع أي من الأعمدة في استجابة طلب البحث. إذا كان الحقل@Nullable
، ستطبع الغرفة تحذيرًا فقط. b/67115337 - يتحقق تطبيق Room الآن من صحة الفهارس في الإصدارات الأحدث من نظام التشغيل. b/63132683
- تختار الغرفة الدالة الإنشائية الخالية من الوسيطات تلقائيًا إذا كانت هناك عدة منصات إنشاء مطابقة في Pojo. b/67353427
- يمكن أن تكون المفاتيح الأساسية ذات العمود الواحد
Nullable
إذا كانتInteger
أوLong
. b/67086876 - تتعامل أداة تتبُّع البطلان مع عملية إعادة الدخول في وضع الاختبار بشكلٍ صحيح. b/65471397
- تتحقق الغرفة الآن من عدم وجود أحرف غير صالحة في أسماء الأعمدة والجداول في وقت التجميع (الأحرف غير الصالحة:
`
،"
). b/64749111
- تطبع Room الآن رسالة خطأ في وقت التجميع عندما تحتوي طريقة Pojo التي تم عرضها في
طريقة
21 أيلول (سبتمبر) 2017
في هذا الإصدار، تصل جميع وحدات المكوّنات المعمارية إلى beta 1
على الأقل
(باستثناء مكتبة تسجيل الصفحات الجديدة التي هي alpha 2
).
ولا نخطط لإجراء أي تغييرات أخرى في واجهة برمجة التطبيقات. قد تحدث تغييرات غير مخطط لها، إلا أنّ شريط تغيير
أي واجهة برمجة تطبيقات قبل ثبات 1.0.0
مرتفع جدًا وغير مرجّح.
- ستتم إزالة LifecycleActivity وLifecycleFragment قبل ثبات
1.0.0
. ولن تكون هناك حاجة إليها عند استخدام الإصدار26.1.0
من Support Library أو إصدار أحدث.
على عكس مرحلة ألفا، من المقرر أن تكون مدة المرحلة التجريبية قصيرة للغاية.
التغييرات في الإصدار
- تم تغيير اسم الغرفة أو إضافات مراحل النشاط إلى
beta 1
. - أصبح تسجيل الصفحات الآن
alpha 2
- ليس هناك أي تغييرات في مراحل الحياة (وقت التشغيل، العادي) وARC Core (عام). هاتان العنصران هما الإصدار
1.0.0
منذ 13 أيلول (سبتمبر).
عناصر جديدة
تحتوي دورات الحياة الآن على عنصر جديد يسمى
common-java8
. يحتوي هذا العنصر على واجهة جديدة باسم DefaultLifecycleMonitorer تتضمّن عمليات تنفيذ تلقائية لجميع طُرق مراحل النشاط. إذا كنت تستخدم لغة Java 8، فيجب أن تفضل هذه الأداة على التعليقات التوضيحية.- بسبب خطأ في "
beta1
"، يجب إضافة عنصر تبعي صريح إلى وحدةandroid.arch.lifecycle:common:1.0.1
لاستخدام عنصرcommon-java8
الجديد. سيتم إصلاح هذه المشكلة فيbeta2
.
- بسبب خطأ في "
التغييرات في حزمة المحتوى
- تم نقل
android.arch.persistence.room.db
إلىandroid.arch.persistence.db
. - تم نقل
android.arch.persistence.room.db-impl
وإعادة تسميته إلىandroid.arch.persistence.db-framework
.
يعتمد هذان العنصران على تطبيق Room، لذلك لن تحتاج إلى تغيير أي شيء في ملفات الإصدار ما لم تكن تستخدمه بشكل مباشر.
تغييرات واجهة برمجة التطبيقات
الغرفة:
- يتيح الآن التعليق التوضيحي @ColumnInfo إعداد تجميع على العمود. b/62007004
- يتم الآن تجاهل حقول
transient
تلقائيًا ما لم تتم إضافة تعليقات توضيحية إليها باستخدام@ColumnInfo
أو@Embedded
أو@Relation
. b/62600692 - يجب إضافة تعليقات توضيحية إلى المفاتيح الأساسية باستخدام
@NonNull
ما لم يتم إنشاؤها تلقائيًا. b/64292391- قد يتطلب هذا التغيير نقل بيانات المخطط. نعتذر عن الإزعاج الذي سبّبته هذه المشكلة.
- تمت إضافة تعليق توضيحي جديد للملاءمة (@معاملة)
يتجاهل طريقة
DAO
ويشغّلها داخل إحدى المعاملات.
دعم قاعدة بيانات SQLite:
- تغييرات واجهة برمجة التطبيقات في ضبط قاعدة البيانات. b/65349673 b/65499876
الانتقال من صفحة إلى أخرى:
- مستندات محسَّنة بشأن الانتقال إلى الصفحات تحتوي على المزيد من الأمثلة والتعليقات التوضيحية لسلاسل المحادثات
إصلاح الأخطاء
- الغرفة:
- يتم التعامل مع سلاسل Kotlin المتعددة الأسطر في طرق
@Query
بشكل صحيح. b/65809374
- يتم التعامل مع سلاسل Kotlin المتعددة الأسطر في طرق
- الانتقال من صفحة إلى أخرى:
- لم تعُد عناصر الترحيل تعتمد على junit. b/65690261
1.0.0 ألفا من 9 إلى 1 - 13 أيلول (سبتمبر) 2017
هذا إصدار رئيسي حيث تصل العناصر الأساسية في مراحل النشاط (وقت التشغيل والنظام الأساسي) والنواة الأساسية (الشائعة)
إلى الإصدار الثابت 1.0.0
.
إلى جانب هذا التغيير، يعتمد الإصدار 26.1.0 من Support Library الآن على هذه المكتبات. ينفذ الآن كل من AppCompatActivity وقسم الدعم واجهة LifecycleOwner.
يعتمد هذا الإصدار أيضًا على الإصدار 26.1.0
من "مكتبة الدعم" للاستفادة من التكامل الجديد.
مكتبة جديدة: الانتقال من صفحة إلى أخرى
ويتضمّن هذا الإصدار أيضًا مكتبة جديدة تُسمى Page، والتي تتيح تحميل مجموعات البيانات الكبيرة بسهولة إلى RecyclerView على شكل أجزاء عند الضرورة. يتم إطلاق تقسيم الصفحات باسم alpha1
وسيكون له دورة إصدار خاصة به.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف الفئات التالية نهائيًا وستتم إزالتها في إصدار مستقبلي:
إصلاح الأخطاء
تتم الآن إضافة تعليقات توضيحية إلى الصفوف التي تم إنشاؤها باستخدام
@Generated
إذا كان التطبيق يحتوي على التعليق التوضيحي في مسار الفئة. b/35754819تم إصلاح خطأ مقارنة المراقب في MediatorLiveData. b/64413274
طلبات بحث SQLite
WITH
متاحة الآن مع [LiveData]. [ref-LiveData] b/62510164تم إصلاح الخطأ الذي كان لا يرسل فيه واجهة برمجة التطبيقات القائمة اليمنى في حال ملاحظة أكثر من جدول واحد. b/65099281
تم إصلاح الخطأ المتمثل في إنشاء غرفة لملفات مختلفة على نظام التشغيل Windows. b/64470691
ميزة LifecycleMonitorers في حزمة الجذر متاحة الآن. b/62310817
1.0.0 ألفا 9 - 16 آب (أغسطس) 2017
إصلاح الأخطاء
- تم إصلاح خطأ في LiveData، بحيث تم تجاهل Monitorer الثاني عند إزالة الأولى من طريقة
onChanged
. b/64285805
1.0.0 ألفا 8 - 1 آب (أغسطس) 2017
التغييرات في السلوك
- يُضاف القيد
NOT NULL
لأعمدة الأنواع الأساسية أو الأعمدة التي تم التعليق عليها بـ NonNull. يؤدي هذا إلى تغيير بنية الجداول الخاصة بك، لذلك إذا كنت تستخدم الإصدار ألفا 7 للبنية الأساسية أو إصدارًا أقدم، عليك تنفيذ عملية نقل البيانات إذا كنت تريد الاحتفاظ بالبيانات أو استخدام طريقةfallbackToDestructiveMigration()
في أداة الإنشاء. b/62007004
تغييرات واجهة برمجة التطبيقات
- تعمل ميزة SupportSQLiteProgram الآن على تمديد ميزة AutoCloseable. b/63131997
1.0.0 ألفا 7 - 26 تموز (يوليو) 2017
إصلاح الأخطاء
تم إصلاح الخطأ الفادح في طريقة LifecycleRegistry
removeObserver
، ما أدى إلى إيقاف قراءة LifecycleMonitorer.تم إصلاح أداة UnifiedationTracker لقواعد البيانات المخصّصة b/63162311
1.0.0 ألفا 6 - 25 تموز (يوليو) 2017
التغييرات في السلوك
تم تغيير ترتيب استدعاءات LifecycleMonitorer. في السابق، كان يتم استدعاء المراقبين دائمًا بترتيب إضافته: إذا تمت إضافة
observer1
قبلobserver2
، سيتلقّىON_CREATE
وجميع الأحداث الأخرى قبلobserver2
. لم يعد هذا صحيحًا بالنسبة لأحداث التدمير، حيث يتم استدعاء المراقبين لهم بترتيب الجمع العكسي. وبالتالي، يكون السلوك الحالي: في حال إضافةobserver1
قبلobserver2
، سيتم إرسالON_CREATE
أولاً إلىobserver1
، ثم إلىobserver2
(الأمر نفسه ينطبق علىON_START
وON_RESUME
)، ولكن يتم إرسال الحدثON_PAUSE
أولاً إلىobserver2
ثم إلىobserver1
فقط (الحدث نفسه فيON_STOP
وON_DESTROY
).تطرح الغرفة استثناءً في حال فقدان عملية نقل البيانات. في السابق، كان يتم فقط محو قاعدة البيانات في تطبيق Room، ولكن يتعطّل الآن. يمكن للمطورين الموافقة على سلوك المقاصة من خلال استدعاء واجهة برمجة التطبيقات الخاصة بأداة الإنشاء. b/63872392
تغييرات واجهة برمجة التطبيقات
تمت إضافة طريقة
fallbackToDestructiveMigration()
إلىRoomDatabase.Builder
لمحو قاعدة البيانات في حال عدم توفُّر عملية نقل البيانات. b/63872392تعتمد مكونات البنية الآن على الإصدار 26.0.0 من مكتبة الدعم
إصلاح الأخطاء
تم إصلاح طريقة معالجة @Relation المضمّنة في @embedded. b/63736065
إصلاح عمليات نقل بيانات الاختبار للجداول التي تتضمن مفتاحًا أساسيًا تمت إضافته تلقائيًا. b/63393618
والآن، يتم الآن تلقّي الوسيطات بشكلٍ صحيح من خلال @استعلامات التي تشغِّل طلبات بحث DELETE أو UPDATE بشكل صحيح. b/63872538
يتم الآن الاحتفاظ بـ ViewModels، عندما يكون جزء المالك في الحزمة الخلفية ويحدث تغيير الإعداد مرتين. b/38445801
1.0.0 ألفا 5 - 18 يوليو 2017
تغييرات واجهة برمجة التطبيقات
تمت إضافة طريقة جديدة لمعاودة الاتصال إلى
RoomDatabase.Builder
لملاحظة وقت إنشاء قاعدة بيانات أو فتحها. b/62699324قد تعرض @Query الآن RxJava
Maybe
أوSingle
. b/62231019
عليك الاعتماد على عناصر android.arch.persistence.room:rxjava2
لإضافة دعم RxJava إلى Room.
إصلاح الأخطاء
تم إصلاح طلبات بحث
@Delete
بدون أي معلمات. b/63608092عمليات التحقق من أنواع الغرف ذات الصلة بالحروف والقيم. b/63733651
1.0.0 ألفا 4 - 11 يوليو 2017
تغييرات واجهة برمجة التطبيقات
تمت إضافة طريقة معالجة جديدة (
runInTransaction()
) إلى RoomDatabase.يمكن أن تحتوي الطرق
@Insert
و@Delete
و@Update
الآن على معلَمات من أنواع مختلفة من الكيانات. b/62682405
إصلاح الأخطاء
تم إصلاح معالجة
byte[]
في@Dao
طريقة. b/62460045تستخدم الآن عملية تسجيل نقل البيانات في الغرفة مقارنة غير حساسة لحالة الأحرف. b/62875382
تم إصلاح إعدادات الحماية الخاصة بعنصر دورات الحياة. b/62113696
1.0.0 ألفا 3 - 15 حزيران (يونيو) 2017
تغييرات واجهة برمجة التطبيقات
تتوافق أداة
@OnLifecycleEvent
مع مَعلمة حدث واحدة فقط الآن. يُعد هذا تغييرًا استعدادًا لدعم Java 8 بحيث يمكننا الانتقال إلى الواجهات ذات الطرق الافتراضية في المستقبل. في ما يتعلق بهذا التغيير، يمكن فقط أن تتلقّى طرق@OnLifecycleEvent(ON_ANY)
التي تتضمّن تعليقات توضيحية معلَمة ثانية من النوعEvent
(المعلمة الأولى هيLifecycleOwner
). يمكنك الاطّلاع على مستندات رحلة المستخدم للحصول على التفاصيل.تم نقل صفَي
LifecycleActivity
وLifecycleFragment
إلى عنصرandroid.arch.lifecycle:extensions
.يتلقّى migrationTestHelper مثيل Hardwareation بدلاً من
Context
بحيث تتاح له قراءة المخطط من مواد العرض قيد الاختبار وإنشاء قاعدة البيانات في سياق التطبيق.يمكن الآن أن تشتمل التعليقات التوضيحية
@Insert
و@Delete
و@Update
في طرق@DAO
علىIterable
كنوع المعلَمة. b/62259820
إصلاح الأخطاء
لم يعد يتم استدعاء الأساليب التي يتم إلغاؤها مع أحداث مراحل النشاط عدّة مرات.
يتم الآن التعامل مع معلَمات
IN
المتعددة بشكل صحيح. b/62608681يمكن أن تحتوي فئات DAO التجريدية الآن على دالة إنشائية تتلقى المثيل
@Database
. b/38488747يمكن أن يكون لـ
DAO
الآن فئة/واجهة فائقة بمعلمات النوع. b/62103620
1.0.0 ألفا 2 - 2 حزيران (يونيو) 2017
تغييرات واجهة برمجة التطبيقات
يتلقّى الآن استدعاء InvalidationTracker قائمة بأسماء الجداول التي تم تغييرها. (b/38468740)
تم تقليل سطح واجهة برمجة التطبيقات للفئة SupportSQLiteDatabase. (b/38481640)
إصلاح الأخطاء
- حماية الملفات لمراحل الحياة. (b/62113696)
- فقدان البيانات بسبب محولات الأنواع (b/62100716)
- السماح بعرض
Long[]
من@Insert
طلب بحث.
1.0.0 ألفا 1 - 17 أيار (مايو) 2017
MinSDK: 14
تنبيهات عامة
على الرغم من أننا أجرينا الكثير من الاختبارات قبل الإطلاق، لا تزال مكونات البنية في مرحلة الإصدار الأولي. إذا كنت تنشئ تطبيقًا للإنتاج، يُرجى العلم بأنّ واجهة برمجة التطبيقات ستتغيّر قبل الإصدار 1.0 وقد لا تكون فعّالة بالكامل. إذا لم تكن تشعر بالراحة عند تصحيح المشكلات في المكتبات التي تستخدمها، فإننا نوصي بتجربة مكونات البنية في المشروعات الجانبية أولاً.
لا ننصح جميع المستخدمين بنقل البيانات اليوم. سيكون لدينا دليل نقل جاهز للإصدار 1.0 من مكونات البنية.
القيود والمشاكل المعروفة
- دورة الحياة
Fragment
وActivityCompat
في مكتبة الدعم لا ينفذان بعد واجهةLifecycleOwner
. وسيصل إليها عندما تصل المكونات المعمارية إلى الإصدار 1.0.0.