15 كانون الثاني (يناير) 2019
مدير العمل
تم إصدار WorkManager 1.0.0-beta02. يحتوي هذا الإصدار على بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح الحالة الهامشية حيث يمكن تشغيل العمل الدوري أكثر من مرة لكل فاصل على الأجهزة التي تعمل بنظام التشغيل Android 6.0 (المستوى 23 لواجهة برمجة التطبيقات). b/121998363
- تم إصلاح
ConcurrentModificationExceptionعلى الأجهزة التي تعمل بنظام التشغيل Android 5.1 (واجهة برمجة التطبيقات). المستوى 22) أو أقل. b/121345393 - إصلاح التنفيذ الخاطئ للعمل عند عدم تلبية القيود على الأجهزة يعمل بنظام التشغيل Android 5.1 (المستوى 22 لواجهة برمجة التطبيقات) أو أقل. b/122578012
- معالجة محسّنة لإكمال العمل لتكون أسرع في بعض الحالات الحدّية. b/122358129
- تمت إضافة تغيير لمعالجة حالات السباق المحتملة بين حالات متعددة
من
LiveDataالتي يستخدمها WorkManager. - تم النقل لاستخدام تبعية
Room1.1.1بدلاً من1.1.1-rc01. هذه النسختين متطابقتين. b/122578011
19 كانون الأول (ديسمبر) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-beta01. لا يتضمّن هذا الإصدار أي تغييرات في واجهة برمجة التطبيقات. من الآن فصاعدًا، من المتوقع أن يبقى WorkManager مستقرًا حتى الإصدار التالي ما لم تحدث مشكلة حرجة. يحتوي هذا الإصدار على بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- ولن يتم بعد الآن تشغيل العناصر الثانوية التي تم إلغاؤها في وقت سابق لعمل أحد الوالدَين الذي أكمل بنجاح. b/120811767
- فئات تسجيل مهيأة بشكل صحيح (يتم عرضها بشكل أساسي أثناء الاختبارات).
18 كانون الأول (ديسمبر) 2018
التنقّل
تم إصدار ميزة التنقل 1.0.0-alpha09. يتضمّن هذا الإصدار تغييرات قد تؤدي إلى أعطال في واجهة برمجة التطبيقات.
يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى أعطال أدناه.
لقد اخترنا عدم الاستمرار في تطوير
عنصر واحد (android.arch.navigation:navigation-testing) وقد أثبت هذا
مفيدة في اختبار NavController الداخلي، لذلك ننصح بشدة
استراتيجيات اختبار بديلة، مثل السخرية من مثيل NavController
للتأكّد من أنّه يتم إجراء مكالمات navigate() الصحيحة. هذا النمط
نهجًا مفصلاً في
حديث حول نشاط واحد في مؤتمر AndroidDevSummit 2018
وسنعمل على وثائق إضافية حول الاختبار تحديدًا
باستخدام ميزة التنقل.
الميزات الجديدة
- لن تعود "
MenuItem" التي تستخدم "menuCategory="secondary"" تبرز الجهة الخلفية. تكديس عند استخدامه مع طرقNavigationUI. b/120104424 - يتيح لك
AppBarConfigurationالآن إعداد إجراء احتياطيOnNavigateUpListenerالمثيل الذي سيتم استدعاؤه عند إرجاعnavController.navigateUp()falseb/79993862 b/120690961
تغييرات قد تؤدي إلى أعطال
- عند استخدام
<argument>معargType="reference"، لن يعود التنقل يحلّل المرجع، وبدلاً من ذلك يقدّم معرّف المورد الأولي نفسه. b/111736515 onNavDestinationSelected()يعود الآن إلى وجهة بداية الرسم البياني للتنقل افتراضيًا، لجعلها متسقة مع طرقsetup. إضافةmenuCategory="secondary"إلىMenuItemلتجنُّب إزالة الحزمة الخلفية. aosp/852869- يتم الآن استخدام طريقة
fromBundle()لصفArgsتم إنشاؤهBundleبدلاً من قيمةBundleقابلة للقيم الفارغة aosp/845616
إصلاح الأخطاء
- تم تحليل الوسيطات الآن بشكل صحيح من الروابط المؤدية إلى صفحات في التطبيق على أنّها
argTypeالصحيحة. بدلاً من أن تكون دائمًا كسلاسل b/110273284 - يعمل التنقل الآن على تصدير موارده العامة بشكل صحيح b/121059552
- إنّ أداة Safe Args متوافقة الآن مع المكوّن الإضافي Android Gradle Plugin 3.4 Canary 4 والإصدارات الأحدث b/119662045
12 كانون الأول (ديسمبر) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha13. يحتوي هذا الإصدار على تغيير بسيط في واجهة برمجة التطبيقات سيكون مفيدًا لبعض مستخدمي 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 من "مكتبة الدعم". 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 - وهناك العديد من الفئات والطرق التي لا تهدف إلى التصنيف الفرعي، مثل
"
NavOptions" و"NavInflater" و"NavDeepLinkBuilder" و"AppBarConfiguration" تم إجراءfinalaosp/835681 - تمت إزالة طريقة
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
الوسيطات الآمنة
- تتوافق الوسيطات الآمنة مع العناصر التسلسلية، بما في ذلك قيم التعداد. أنواع التعداد
يمكنك ضبط قيمة تلقائية باستخدام التعداد الحرفي بدون اسم الفئة
(مثال:
app:defaultValue="READ") b/111316353 - تتوافق ميزة "الوسيطات الآمنة" مع الصفائف من جميع الأنواع المتوافقة b/111487504
- تتجاهل "الإعدادات الآمنة" الآن المجلدات الفرعية لأدلة الموارد b/117893516
- تضيف ميزة "الوسيطات الآمنة" تعليقات
@Overrideالتوضيحية عند الاقتضاء b/117145301
5 كانون الأول (ديسمبر) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha12. يتضمّن هذا الإصدار بعض التغييرات غير الناجحة في واجهة برمجة التطبيقات. يُرجى الاطّلاع على القسم Breaking API Changes (التغييرات في واجهة برمجة التطبيقات) أدناه. من المرجّح أن يتمّ طرح هذا الإصدار كأول إصدار تجريبي. يتضمّن alpha12 أيضًا تعديلات شاملة على المستندات.
التغييرات في واجهة برمجة التطبيقات
- يقدّم عنصر جديد، اسمه "
work-rxjava2"، ميزة "RxWorker". هذهListenableWorkerمن المتوقّع أن تكون فيSingle<Payload>. - تمّت إزالة دعم JobDispatcher من Firebase بسبب اقتراب موعد إيقافه. ويعني هذا أنّه لن يتم تحديث عنصر "
work-firebase" مع بدء الإصدار التجريبي. ونحن نسعى إلى إضافة بديل في المستقبل. - سيتم تجميع
PayloadإلىResult. تم تغيير دورResultإلى "فئة مختومة". من خلال ثلاثة طرق تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()(أوResult.success(Data)) وResult.failure()(أوResult.failure(Data)) وResult.retry(). نتيجةListenableFutureهيResultبدلاً منPayload. لا تحتويWorkerعلى طريقتَي getter وsetter للمخرجات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معCANCELLEDStateخلالListenableWorker.onStopped(). - يتم التعامل مع
nullResultعلى أنّها إخفاقات فيListenableWorker. b/120362353 - إصلاح نظري لأجهزة Shield اللوحية التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات، ما يؤدي أحيانًا إلى ظهور خطأ
IllegalArgumentExceptionb/119484416
كسر التغييرات في واجهة برمجة التطبيقات
- تمّت إزالة دعم JobDispatcher من Firebase بسبب اقتراب موعد إيقافه. ويعني هذا أنّه لن يتم تحديث عنصر "
work-firebase" مع بدء الإصدار التجريبي. ونحن نسعى إلى إضافة بديل في المستقبل. - سيتم تجميع
PayloadإلىResult. تم تغيير دورResultإلى "فئة مختومة". من خلال ثلاثة طرق تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()(أوResult.success(Data)) وResult.failure()(أوResult.failure(Data)) وResult.retry(). نتيجةListenableFutureهيResultبدلاً منPayload. لا تحتويWorkerعلى طريقتَي getter وsetter للمخرجات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الآن سلسلة بدلاً من تعداد. يسمح هذا الإجراء باستخدام أدوات إنشاء الرموز المميّزة المخصّصة بواسطة الغرفة. لا يزال يتم تحديد أدوات إنشاء الرموز المميّزة المضمَّنة فيFtsOptionsكثوابت سلسلة. b/119234881
الميزات الجديدة
- Couroutines: يمكن الآن أن تكون طرق DAO دوال تعليق. لإتاحة وظائف التعليق في الغرفة، تم إصدار عنصر جديد، وهو "
room-coroutines". b/69474692 - طُرق DAO التي تحتوي على تعليقات توضيحية باستخدام
@Insertأو@Deleteأو@Updateتتوافق الآن معListenableFutureكنوع من أنواع الإرجاع. b/119418331
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في محاولة الغرفة عن طريق الخطأ العثور على دالة إنشاء باستخدام أعمدة في السمة
ignoredColumnsفي@Entity. b/119830714 - تم إصلاح الخطأ الذي لم يكن من حيث الغرفة يضع علامة على معلَمات طريقة DAO باعتبارها نهائية في التنفيذ الذي تم إنشاؤه. b/118015483
- تم إصلاح الخطأ الذي كان يؤدي إلى تعطُّل معالِج الغرفة عند الإبلاغ عن خطأ في طلب بحث يتضمّن رموزًا خاصة. b/119520136
- تم إصلاح الخطأ الذي كان يؤدي إلى رفض الغرفة تنفيذ العديد من عمليات تنفيذ
Collectionالأخرى كوسيطات في تعبيرIN. b/119884035 - تم إصلاح الخطأ المتمثل في تجميع البيانات غير المرغوب فيها في LiveData من الغرفة عند رصدها بشكل دائم، ما يؤدي إلى عدم إصدار بيانات جديدة بعد الآن. b/74477406
- تم تعديل قفل الإغلاق في "
RoomDatabase" لتقليل التضارب في الهوية. b/117900450
8 تشرين الثاني (نوفمبر) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha11. يتضمّن هذا الإصدار العديد من التغييرات التي ستصبح واجهة برمجة تطبيقات مستقرة في 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()API لإدراجOneTimeWorkRequestفريدة في قائمة المحتوى التالي بدون الحاجة إلى إنشاءWorkContinuation. - تعرض الآن جميع صيغ
enqueueوcancelفيWorkManagerنوعOperationجديدًا. يشكّل هذا التغيير تغييرًا جذريًا. - لم تعد جميع صيغ
enqueueتقبل الفروقات لـWorkRequest. يشكّل هذا التغيير تغييرًا جذريًا. يمكنك استخدام "المجموعات" بدلاً من ذلك. يمكنك استخدامArrays.asList()لتعديل الرمز الحالي. وقد نفّذنا هذا الإجراء لتقليل عدد مساحات عرض واجهة برمجة التطبيقات وعدد الطرق. - ستؤدي محاولة إجراء
initializeWorkManagerأكثر من مرة واحدة لكل عملية إلى الحصول على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. - ستؤدي محاولة إجراء
initializeWorkManagerأكثر من مرة واحدة لكل عملية إلى الحصول على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
الوسيطات الآمنة
- أصبحت الوسيطات الآمنة الآن لها تبعية ثابتة للمكوّن الإضافي لنظام Gradle المتوافق مع Android 3.2.1. b/113167627
- يمكن الآن إنشاء اتجاهات للصفوف الداخلية. b/117407555
- تم إصلاح مشكلة إنشاء الاتجاهات إلى عنصر <include> الرسم البياني. b/116542123
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
11 تشرين الأول (أكتوبر) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha10 مع دعم للعمل غير المتزامن الذي يتحكم فيه المطوّر. هناك تغييرات قد تؤدي إلى عطل في واجهة برمجة التطبيقات في هذا الإصدار. يُرجى الاطّلاع على القسم 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'من ملف Gradle. - تمت إضافة إعدادات Proguard للاحتفاظ بدالة إنشاء
Workerالجديدة. b/116296569 - إصلاح
NullPointerExceptionالمحتمَلة في حالة السباق التي تم فيها بدء العمل بـREPLACEيوم b/116253486 وb/116677275 - يقبل
WorkContinuation.combine()الآنWorkContinuationواحدة أو أكثر بدلاً من اثنين أو أكثر. b/117266752
كسر التغييرات في واجهة برمجة التطبيقات
- تمت إزالة جميع طُرق وفئات
deprecatedالسابقة، لا سيما طريقة الإنشاء التلقائيةWorker. - تم دمج الواجهة
WorkerFactoryوالتنفيذ الملموسDefaultWorkerFactoryفي فئة مجردة تُسمىWorkerFactory. - تمّت إزالة "
WorkManager.synchronous()" و"WorkContinuation.synchronous()". - تعرض
WorkManager.getStatus*()طريقة الآنListenableFuture.WorkManager.getStatus*LiveData()إرجاعLiveData
الميزات:
تم طرح العقود الآجلة 1.0.0-alpha02.
التغييرات في واجهة برمجة التطبيقات
- يمكن للمطوّرين الآن استخدام
ResolvableFutureوAbstractResolvableFutureكعمليات تنفيذ ملموسة بسيطة لـListenableFuture.
8 تشرين الأول (أكتوبر) 2018
Room
تم إلغاء حجز الغرفة 2.1.0-alpha01.
الميزات الجديدة
- FTS: تتيح الغرفة الآن الكيانات التي تتضمّن جدول ربط FTS3 أو FTS4. يمكن الآن إضافة تعليقات توضيحية أيضًا باستخدام
@Fts3أو@Fts4للفئات التي تحتوي على تعليقات توضيحية باستخدام@Entity، وذلك للإعلان عن فئة باستخدام جدول بحث في النص الكامل للتعيين. تتوفّر خيارات FTS لإجراء المزيد من التخصيص من خلال طرق التعليق التوضيحي. b/62356416 - العروض: تتيح الغرفة الآن الإعلان عن فئة باعتبارها طلب بحث مخزَّنًا، وتُعرف أيضًا باسم طريقة العرض باستخدام التعليق التوضيحي @DatabaseView. b/67033276
- القيمة التلقائية: تتيح الغرفة الآن تعريف فئات القيمة التلقائية التي تتضمن تعليقات توضيحية على أنّها كيانات ونقاط POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة
@PrimaryKeyو@ColumnInfoو@Embeddedو@Relationفي الطرق المجرّدة للصف الذي يتضمّن قيمة تلقائية. يُرجى العِلم أنّه يجب أيضًا أن يكون هذا التعليق التوضيحي مصحوبًا بـ "@CopyAnnotations" لكي تفهمه الغرفة بشكل صحيح. b/62408420 - دعم أنواع إرجاع السلع Rx: إنّ طُرق DAO التي تحتوي على تعليقات توضيحية باستخدام
@Insertأو@Deleteأو@Updateتتوافق الآن مع أنواع إرجاع Rx:Completableو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
إصلاح الأخطاء
- تم إصلاح مشكلتين هما لا يمكن استرداد الغرفة بشكل صحيح من قاعدة بيانات تالفة أو عملية نقل بيانات غير صالحة أثناء الإعداد. 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.
مراحل النشاط
إصلاح الأخطاء
- تم إصلاح قاعدة ViewModel Proguard التي أزالت التركيبات الإنشائية بشكلٍ غير صحيح b/112230489
20 أيلول (سبتمبر) 2018
التنقّل
تم طرح ميزة التنقّل 1.0.0-alpha06 مع إصلاحات للأخطاء وتغييرات في واجهة برمجة التطبيقات.
الميزات الجديدة
- تتوفّر الآن عمليات نقل العناصر المشتركة لوجهتَي "الأجزاء" و"النشاط" على b/79665225. لمزيد من المعلومات، يُرجى الاطّلاع على تنفيذ ميزة التنقل باستخدام مكوّن بنية التنقّل.
- سيؤدي اختيار عنصر في
NavigationViewإلى إغلاق أي بطاقة سفلية تتضمّن b/112158843.
التغييرات في واجهة برمجة التطبيقات
- تغيير قد يؤدي إلى عطل: تستخدم طريقة المستكشف
navigate()الآن مَعلمةNavigator.Extras. - طريقة
getGraph()في NavController هي الآنNonNullb/112243286
إصلاح الأخطاء
- لم تعُد ميزة "
NavigationUI.setupWithNavController()" تسريب على المشاهدات في حال استخدامها مع مشاهدات من وجهات فردية b/111961977. - يتم الآن تسمية المستكشف
onSaveState()مرة واحدة فقط b/112627079
الوسيطات الآمنة
- تعمل فئات الاتجاهات الخاصة بوجهة التنقل الآن على توسيع فئة الاتجاهات الرئيسية إذا كانت موجودة b/79871405
- تحتوي فئات الاتجاهات والوسيطات الآن على تنفيذ
toString()مفيد b/111843389
19 أيلول (سبتمبر) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha09 مع إصلاحات للأخطاء وتحديثات البنية الأساسية وتغييرات واجهة برمجة التطبيقات.
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف واحد باستخدام المسار المستقل لنظام التشغيل 'meta-INF/proguard/androidx-annotations.pro'"، يُرجى وضع ما يلي في ملف Gradle كحل بديل مؤقت أثناء حلّ المشكلة في الإصدار alpha10:
Groovy
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الجديدة داخليًا (بدون اعتماديات Java). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيتيح هذا التغيير إظهارNonBlockingWorkerفي النهاية. - يمكنك إضافة إمكانية تشغيل العمل المحدد بزمن في
TestDriverمن خلالTestDriver.setInitialDelayMet(UUID)وTestDriver.setPeriodDelayMet(UUID). b/113360060
تغييرات قد تؤدي إلى أعطال
- تم إيقاف دالتَي الإنشاء
WorkerوNonBlockingWorkerالتلقائيتين نهائيًا. يُرجى الانتقال إلى الدالة الإنشائية الجديدة في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية الدالة الإنشائية الافتراضية.
27 آب (أغسطس) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha08 مع إصلاحات للأخطاء.
إصلاح الأخطاء
- تم تصنيف مكونات WorkManager بوضوح على أنّها تشغيل مباشر بدون إدراكها لكي لا يتم تنشيطها أثناء التشغيل المباشر. وفي المستقبل، سنوفر إصدارًا من WorkManager مرتكزًا بشكل مباشر على نظام التشغيل. b/112665532
- تم إصلاح المشكلة المتمثلة في عدم تشغيل العمل المُعاد المحاولة. b/112604021
- تم إصلاح العمل الدوري الذي لا يتم تنفيذه بشكل متكرر (المتعلقة بالمشكلة المذكورة أعلاه). b/112859683
- سياسات التراجع التي تم الالتزام بها عندما تكون عملية التطبيق قيد التشغيل.
- تم تصحيح رسائل الاستثناءات في
Dataللإشارة إلى أن الحد الأقصى هو 10 كيلوبايت. - تم خفض الحد الأقصى للقيمة من
Configuration.setMaxSchedulerLimit(int)إلى 50 لمراعاة بعض وقت الاستجابة عند اكتمال معالجةJobScheduler. b/112817355
16 آب (أغسطس) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha07 مع إصلاحات للأخطاء وتغييرات بسيطة في واجهة برمجة التطبيقات.
إصلاح الأخطاء
- تم إصلاح استعلام SQL محتمل بحدود سالبة يمكن أن تؤدي إلى عرض عدد غير محدود من النتائج.
- يؤدي العمل الذي اكتمل التنفيذ الآن بشكل صحيح إلى إلغاء جميع النُسخ المعلَّقة لهذا العمل في أدوات جدولة أخرى. أدى ذلك إلى تجاوز الحد الأقصى المسموح به لعدد الوظائف البالغ
JobScheduler. b/111569265 - تم إصلاح
ConcurrentModificationExceptionفيConstraintTracker. b/112272753 - تم تغيير التعليقات التوضيحية لنوع الإرجاع
Data.getBooleanArray(String)وData.getIntArray(String)إلى@Nullableبدلاً من@NonNull. b/112275229
التغييرات في واجهة برمجة التطبيقات
- تم تمديد صف جديد، وهو "
NonBlockingWorker"، من قِبل "Worker". ولن يؤثر ذلك في أي استخدام حالي. في المستقبل، سيصبح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 مع إصلاحات للأخطاء.
إصلاح الأخطاء
- إصلاح الخطأ الذي يتسبب في سلوك غير صحيح في تسلسل استدعاء الدوال البرمجية b/111907708
- إصلاح خطأ في
equals()من صفوف Args التي تم إنشاؤها. b/111450897 - إصلاح تعذُّر الإصدار في "الوسيطات الآمنة" b/109409713
- إصلاح إحالة ناجحة من معرّفات الموارد إلى أسماء JavaScript b/111602491
- إصلاح رسائل الخطأ الخاصة بقابلية القيم الفارغة في المكوّن الإضافي "الوسيطات الآمنة"
- أضِف التعليقات التوضيحية التي لا تشير إلى إمكانية قبول القيم الفارغة.
6 آب (أغسطس) 2018
إصدارات AndroidX من إصدارَي Lifecycle و Room وPaging 2.0.0-rc01. لم تتغيّر جميع العناصر من 2.0.0-beta01.
1 أغسطس 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha06 مع إصلاحات للأخطاء.
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل. b/111801342
- إصلاح خطأ يتسبب في عدم تشغيل "
PeriodicWork" في الموعد المحدّد عندما يكون وضع "القيلولة" b/111469837 - إصلاح شرط السباق عند قيود التتبّع التي تؤدي إلى تعطُّل
WorkManager. googlecodelabs/android-workmanager/issues/56 - يمكنك إنشاء قيم
WorkRequestفريدة عند استخدام "WorkRequest.Builder#build()". b/111408337 - يمكنك تفعيل استخدام "
RescheduleReceiver" فقط عند توفُّرWorkRequestالتي تحتاج إليها. b/111765853
24 تموز (يوليو) 2018
مدير العمل
تم إصدار WorkManager 1.0.0-alpha05 مع إصلاحات أخطاء مهمة وتغييرات في التسجيل.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة تعليقات توضيحية إلى "
WorkManager.getInstance()" باستخدام@NonNullبدلاً من@Nullable. بدلاً من ذلك، إذا لم يتم إعداد اللغة المفردة بشكل صحيح في حالات الإعداد اليدوي، ستعرض الطريقةIllegalStateException. This is a قد يؤدي إلى كسر في واجهة برمجة التطبيقات. - تمت إضافة واجهة برمجة تطبيقات جديدة، وهي
Configuration.Builder.setMinimumLoggingLevel(int)، التي يمكنها التحكّم في مستوى الإسهاب في WorkManager. يُسجِّل WorkManagerLog.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 gradle المرتبط على عدد من التغييرات في واجهة برمجة التطبيقات وتغييرات السلوك وإصلاحات الأخطاء.
تغييرات واجهة برمجة التطبيقات / السلوك
- يضبط NavHostFragment الجزء الحالي دائمًا كجزء التنقّل الأساسي، مع ضمان تمييز مدراء الأجزاء الفرعية قبل تمييز NavHostFragment b/111345778
الوسيطات الآمنة
- تغيير قد يؤدي إلى عطل: تم تغيير
app:typeإلىapp:argTypeلتجنُّب التضارب مع المكتبات الأخرى مثل ConstraintLayout 2.0.0-alpha1 b/111110548 - يمكن الآن النقر على رسائل الخطأ الواردة من "الوسيطات الآمنة" b/111534438.
- تؤكد فئات الوسيطات الآن أن سمات
NonNullليست فارغة في الواقع b/111451769 - تمت إضافة تعليقات
NonNullتوضيحية إضافية إلى الفئات التي تم إنشاؤها بواسطة NavDirections وAgs b/111455455 b/111455456
إصلاح الأخطاء
- تم إصلاح مشكلة زر الرجوع في النظام بعد الربط لموضع معيّن بوجهة مجزأة b/111515685
12 تموز (يوليو) 2018
التنقّل
يحتوي شريط التنقّل 1.0.0-alpha03 والمكوّن الإضافي Safe Args gradle المرتبط على عدد من التغييرات في واجهة برمجة التطبيقات وتغييرات السلوك وإصلاحات الأخطاء.
تغييرات واجهة برمجة التطبيقات / السلوك
- تمت إضافة طريقة NavigationUI.setupWithNavController لشريط الأدوات b/109868820.
- تمت إضافة طريقة NavigationUI.setupWithNavController لـ CollapsingToolbarLayout b/110887183.
- الآن تُرجع POPBackStack() القيمة false عندما تكون الحزمة الخلفية فارغة أو عندما لا يكون معرّف الوجهة المحدد في الحزمة الخلفية b/110893637.
- يتجاهل الآن FragmentNavigator عمليات التنقل بعد حفظ FragmentManager الحالة، مع تجنب استثناءات "لا يمكن تنفيذ هذا الإجراء بعد onSaveInstanceState" b/110987825
الوسيطات الآمنة
- كسر التغيير: سيتم استبدال الأحرف غير الأبجدية الرقمية في الإجراءات وأسماء الوسيطات بغلاف الجمل في أسماء طرق NavDirections المعنية.
- مثلاً: سيصبح
DemoController.indexsetDemoControllerIndexb/79995048. - مثلاً: سيصبح
action_show_settingsactionShowSettingsb/79642240.
- مثلاً: سيصبح
- كسر التغيير: تُعتبر الوسيطات الآن غير فارغة تلقائيًا. للسماح بالقيم الفارغة في وسيطات السلسلة والنقاط القابلة للفصل، أضِف
app:nullable="true"b/79642307. - يمكنك الآن استخدام
app:type="long"مع defaultValues على شكل "123L" b/79563966. - أصبحت الوسيطات القابلة للتعديل متاحة الآن باستخدام اسم فئة مؤهل بالكامل للسمة
app:type. إنّ القيمة التلقائية الوحيدة المسموح بها هي"@null"b/79563966. - تنفِّذ فئات الوسيطات الآن
equals()وhashCode()b/79642246 - يمكن الآن تطبيق المكوّن الإضافي Safe Args على مشاريع المكتبة b/80036553.
- يمكن الآن تطبيق المكوّن الإضافي Safe Args على المشاريع المميّزة b/110011752.
إصلاح الأخطاء
- تم إصلاح المشاكل عند التنقل أثناء طرق مراحل نشاط الأجزاء b/109916080.
- تم إصلاح المشكلات عند التنقل عبر الرسوم البيانية المدمجة عدة مرات b/110178671
- تم إصلاح المشاكل عند استخدام
setPopUpToمع الوجهة الأولى في الرسم البياني b/109909461. - تم إصلاح المشكلة المتمثلة في تمرير جميع قيم
app:defaultValueعلى أنها سلاسل b/110710788 - تضيف أداة aapt2 المضمّنة مع الإصدار 3.2 التجريبي من المكوّن الإضافي لنظام Gradle المتوافق مع Android 01 الآن قواعد الاحتفاظ لكل سمة
android:nameفي ملفات XML الخاصة بالتنقل b/79874119. - تم إصلاح تسرُّب الذاكرة عند استبدال برنامج FragmentNavigator التلقائي b/110900142.
2 تموز (يوليو) 2018
إصدارات AndroidX من إصدارَي Lifecycle وroom وpaging و2.0.0-beta01.
مراحل النشاط
إصلاح الأخطاء
- تم إصلاح قاعدة Proguard لـ LifecycleObserver للاحتفاظ بعمليات التنفيذ فقط، وليس الواجهات الفرعية b/71389427
- تم إصلاح قواعد حماية ViewModel للسماح بالتشويش والتقليص.
Room
تغييرات واجهة برمجة التطبيقات / السلوك
- تمت إضافة السمة
RoomDatabase.Builder.setQueryExecutor()للسماح بتخصيص مكان تنفيذ طلبات البحث - تمت إضافة دعم RxJava2
Observable - أصبحت عمليات تنفيذ DAO وقاعدة البيانات التي تم إنشاؤها نهائية الآن
إصلاح الأخطاء
- حدد اسم الفئة/الحقل في "لا يمكن العثور على getter للحقل". خطأ b/73334503
- تم إصلاح مشكلة التوافق مع الأنظمة القديمة في RoomOpenHelper مع الإصدارات القديمة من الغرفة b/110197391.
ترقيم الصفحات
إصلاح الأخطاء
- تم إصلاح اختفاء المحتوى في بعض حالات الإضافة (إيقاف العناصر النائبة، PositionalDataSource) b/80149146
- (تم طرحه في
1.0.1) تم إصلاح الأعطال التي يتعذّر فيها علىPagedListAdapterوAsyncPagedListDifferالإشارة إلى أحداث النقل. b/110711937
26 حزيران (يونيو) 2018
ترقيم الصفحات
تم إطلاق صفحة 1.0.1 مع إصلاح خطأ واحد في runtime. ننصح بشدة باستخدام ميزة "1.0.1" لتحقيق الاستقرار. تم أيضًا إصدار Paing RxJava2 1.0.1، ويتطابق مع 1.0.0-rc1.
إصلاح الأخطاء
- تم إصلاح الأعطال التي يتعذّر فيها على
PagedListAdapterوAsyncPagedListDifferالإشارة إلى أحداث النقل. b/110711937
مدير العمل
تم إصدار WorkManager 1.0.0-alpha04.
إصلاح الأخطاء
تم الآن إعادة جدولة
PeriodicWorkRequestبشكل صحيح عند استخدام التنفيذ المستند إلىAlarmManager.تم إصلاح خطأ ANR محتمل عند إعادة جدولة جميع العاملين بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
تمت إضافة تعليقات توضيحية تشير إلى إمكانية قبول القيم الفارغة إلى العديد من واجهات برمجة تطبيقات WorkManager. b/110344065
تسجيل الاستثناءات غير المرصودة التي تحدث أثناء تنفيذ العامل. b/109900862
تم السماح بعمليات نقل بيانات قاعدة البيانات المدمِّرة في حال قرّرت العودة إلى إصدار قديم من WorkManager. b/74633270
تم إصلاح تعطُّل نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا حدثت فقط في حال استخدام تنسيق العلامة الضمنية نفسه بنفسك.
19 حزيران (يونيو) 2018
Room
تم إلغاء حجز الغرفة 1.1.1. هذا الإصدار مماثل للغرفة 1.1.1-rc1.
مدير العمل
تم إصدار WorkManager 1.0.0-alpha03.
إصلاح الأخطاء
تم إصلاح شرط سباق في التنفيذ المستند إلى
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إضافة دعم Jobparams#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انتقِل الآن إلى عناوين URLDecodes للوسيطات التي تم تحليلها من عناوين URL للروابط المؤدية إلى صفحات معيَّنة. b/79982454
إصلاح الأخطاء
تم إصلاح
IllegalStateExceptionعند استدعاء الانتقال من طرق مراحل نشاط التجزئة. b/79632233يعتمد التنقل الآن على الإصدار 27.1.1 من مكتبة الدعم لإصلاح الوميض عند استخدام الرسوم المتحركة. b/80160903
تم إصلاح
IllegalArgumentExceptionعند استخدام defaultNavHost="true" كجزء فرعي. b/79656847تم إصلاح
StackOverflowErrorعند استخدام NavDeepLinkBuilder. b/109653065تم إصلاح
IllegalArgumentExceptionعند الرجوع إلى رسم بياني مدمج. b/80453447تم حل مشكلة تداخل الأجزاء عند استخدام
launchSingleTop. b/79407969ينشئ التنقل الآن المكدس الخلفي الصحيح للرسومات البيانية المتداخلة. b/79734195
ستميِّز واجهة التنقّل الآن العنصر الصحيح عند استخدام رسم بياني مدمج باعتباره
MenuItem. b/109675998
التغييرات في واجهة برمجة التطبيقات
تم إيقاف سمة
clearTaskللإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptions. b/80338878تم إيقاف سمة
launchDocumentللإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptions. b/109806636
24 أيار (مايو) 2018
تم إصدار WorkManager 1.0.0-alpha02.
مدير العمل
إصلاح الأخطاء
تم إصلاح
NullPointerExceptionفيState.isFinished(). b/79550068تم إصلاح مشكلة تسبّبت في إعادة جدولة
WorkerيومApplication.onCreate(). b/79660657تم إصلاح المشكلة المتمثلة في إمكانية جدولة عمل أكثر مما يسمح به نظام التشغيل. b/79497378
تم نقل إزالة عمليات قفل التنشيط المرتبطة بالثانية
Workerإلى سلسلة المحادثات في الخلفية.يتم الآن محو تنفيذ "
AlarmManager" بشكلٍ صحيح عند اكتمال جميع الأعمال المعلَّقة.تم إصلاح طلبات بحث SQL (لغة الاستعلام البنيوية) التي أثرت في اللغات غير الإنجليزية. b/80065360
تمت إضافة الدعم لـ
floatفيData. b/79443878تعرض الدالة
Data.Builder.putAll()الآن مثيلاً لـBuilder. b/79699162المزيد من javadoc وإصلاحات في الوثائق. b/79691663
التغييرات في واجهة برمجة التطبيقات
بإمكان "
Worker" التفاعل مع إيقاف الإشعارات. يمكن استخدام "Worker.isStopped()" للتحقّق مما إذا تم إيقاف "Worker". يمكن استخدامWorker.onStopped()لإجراء عمليات إزالة بسيطة.تعرض واجهة برمجة التطبيقات
Worker.getTags()العلامةSetالمرتبطة بـ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 Alphas، الغرفة 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 alpha. ضِمن بالإضافة إلى ذلك، يتضمن التنقل و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 وPaging RxJava 1.0.0-alpha1.
ستكون عملية الترحيل متاحة في الإصدار التجريبي لفترة قصيرة قبل التقدم لإصدار المرشح.
ولا نخطط لإجراء المزيد من التغييرات في واجهة برمجة التطبيقات في 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
Room
إصلاح الأخطاء
تم إصلاح خطأ فادح في عمليات تنفيذ Rx
SingleوMaybeفي الغرفة حيث سيعيد تدوير الاستعلام مسبقًا، مما يتسبب في مشكلات إذا أضفت أكثر من 1 المراقب للقيم التي تم إرجاعها وهي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 بسهولة باستخدام دعم الوسيطات) - طريقة fallbackToDestructiveMigrationFrom في RoomDatabase.Builder تقبل الآن
vararg intبدلاً منvararg Integer.
إصلاح الأخطاء
تحاول RoomDatabase.clearAllTables الآن إعادة المساحة إلى نظام التشغيل من خلال ضبط نقطة تفتيش WAL و
VACUUMقاعدة البيانات.يقبل
@RawQueryالآن استخدام أي Pojo للسمةobservedEntitiesما دام يشير Pojo إلى كيان واحد أو أكثر من خلال حقولEmbeddedأوRelation. b/74041772الترحيل: يتعامل تنفيذ مصدر البيانات في الغرفة الآن بشكل صحيح مع التبعيات متعددة الجداول (مثل العلاقات وعمليات الربط). في السابق، لم تنجح هذه الخطوات في تشغيل نتائج جديدة أو كانت يتعذّر تجميعها. 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.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في حال تفعيل العناصر النائبة الحجم الإجمالي هو مضاعف دقيق لحجم الصفحة.
2 آذار (مارس) 2018
تم إلغاء حجز الغرفة 1.1.0-alpha3. هذا هو آخر إصدار ألفا مخطط له
الغرفة 1.1.0
التغييرات في واجهة برمجة التطبيقات
addObserverوremoveObserverلـ ValidationTracker الطرق متزامنة الآن ويجب استدعاؤها على سلسلة محادثات لا تستخدم واجهة المستخدم. يمنع هذا بعض شروط السباق أثناء مراقبة الجداول.هناك طريقة
clearAllTables()جديدة في RoomDatabase تقتطع كل محتويات الجدول. b/63807999تستخدم
SupportSQLiteQueryالآن طريقةgetArgCount()تعرض الرقم لمعلمات طلب البحث. b/67038952
إصلاح الأخطاء
أصبحت ميزة "
@RawQuery" متوافقة الآن بشكل صحيح مع طلبات البحث في الصفحات. b/72600425تم الآن إنشاء أسماء للغرف بشكل صحيح، تم إنشاء
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، إلى جانب بعض عمليات إعادة التسمية لتوضيح وظيفة فئات معيّنة. من المحتمل أن يكون هذا الإصدار الأولي من ترقيم الصفحات هو آخر الإصدارات التي تشهد تغييرات كبيرة تؤدي إلى أعطال واجهة برمجة التطبيقات.
التغييرات في واجهة برمجة التطبيقات
- تم نقل الفئات إلى الإصدار 7 من Recyclerview:
ListAdapter
- تمت إعادة تسمية الفئات ونقلها إلى الإصدار 7 من Recyclerview:
ListAdapterHelper->AsyncListDifferListAdapterConfig->AsyncDifferConfigDiffCallback->DiffUtil.ItemCallback
- تمت إعادة تسمية الفئات داخل وقت تشغيل الصفحات:
PagedListAdapterHelper->AsyncPagedListDiffer
كانت الفئات التي تم نقلها مفيدة بجانب RecyclerView، بشكل مستقل عن مكتبة Paging. ويعني هذا أنّه يمكن استخدامها بدون الاعتماد على إصدار الصفحات الأولية، ولكن يعني أيضًا أنّ التطبيقات التي تستخدم نظام الترحيل يجب ترقيتها إلى الإصدار Alpha 6 والإصدار 27.1.0 من Support Library في الوقت نفسه.
** دليل نقل البيانات للإصدار 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.
الميزات الجديدة
تتيح الغرفة الآن فتح قاعدة البيانات في وضع التسجيل المسبق للكتابة. في هذا الوضع، لن تحظر عمليات الكتابة طلبات البحث التي يتم قراءتها. على الرغم من وتستهلك قدرًا أكبر من الذاكرة (بسبب الاتصالات المتعددة)، فعادةً ما يتم بسرعة أكبر. ستستخدم الغرفة تلقائيًا WAL إذا كان حجم الجهاز
API 16أو أعلى وكان ليس جهاز ذاكرة منخفضة. يمكنك التحكم في هذا السلوك باستخدامsetJournalMode()علىRoomDatabase.Builder. b/67757002فريق دعم Guava: يمكن الآن حضور الغرفة 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 8Kotlinb/72416735
إصلاح الأخطاء
لن تتسبب الدوال المنشئة التي تتضمن
@Relationفي حدوث خطأ في التحويل البرمجي إذا كان هناك دالة إنشائية أخرى يمكن استخدامها. b/72884434تم الآن تخطي أسماء الجداول التي تم تخطيها باستخدام
'بطرق@Queryبشكل صحيح لأداة تتبّع الإيقاف. b/72366965تستخدم الغرفة الآن تعليقات
@Metadataالتوضيحية بلغة Kotlin لقراءة بنية الصف. أثناء معالجة التعليقات التوضيحية وهذا يعني أنه حتى إذا كانت لعبة pojo موروثة من الأخرى، يمكن قراءة أسماء معلمات الدالة الإنشائية بشكل صحيح. b/67181813تم حلّ مشكلة متعلقة بالعثور على مسارات نقل البيانات إلى الإصدارات السابقة. b/72153525
تتم الآن معالجة أنواع الأعمدة غير التلقائية بشكل صحيح عند النقل من قاعدة البيانات الحالية إلى الغرفة. b/71953987
تعالج الغرفة الآن حقول
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.0android.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بما يلي تحكم أكثر دقة في إصدارات المخطط التي تبدأ منها عمليات الترحيل المدمرة مسموح به (مقارنةً بأداة fallbackToDestructiveMigration) b/64989640- لا تتيح الغرفة الآن إلا واجهات برمجة التطبيقات الجديدة لنظام الترحيل (الإصدار alpha-4 أو الإصدارات الأحدث)، وسيتم إيقاف إتاحة واجهات برمجة التطبيقات المتوقّفة نهائيًا.
LivePagedListProviderلاستخدام الإصدار الأولي للغرفة، عليك استخدام أسلوب الترحيل.alpha-4أو أعلى والتبديل منLivePagedListProviderإلىLivePagedListBuilderإذا لم يسبق لك إجراء ذلك.
إصلاح الأخطاء
- تم تحسين التوافق مع أنواع Kotlin Kapt. b/69164099
- لا يؤدي ترتيب الحقول إلى إلغاء صلاحية المخطط بعد الآن. b/64290754
الترحيل 1.0.0-alpha5
إصلاح الأخطاء
- إصلاح تحميل الصفحة عند إيقاف العناصر النائبة b/70573345
- تسجيل إضافي لتتبع خطأ UnknownArgumentException b/70360195 (وإصلاح خلل من جانب الغرفة)
- إصلاحات نماذج رموز Javadoc 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.BuilderDataSource+PagedList.Config، الآن أكثر تشابهًا معLivePagedListBuilder، وتسمح بعامل الماس في لغة Java، أو الأنواع المستنتَجة في Kotlin.تمت إضافة
PagedList.getConfig()، وأصبح لدىPagedList.Configعضو علني الآن. المواقع.لم تعُد تتوقّع "
KeyedDataSource.loadBefore()" الحصول على نتائج معكوسة.تمت إضافة
PagedListAdapter.onCurrentListChanged()للاستماع إلى تحديثات حول جارٍ عرض PagedList.
إصلاح الأخطاء
- تم إصلاح IndexOutOfBoundsException في PagedListAdapter(Helper) 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تعود الآن دورة الحياة بمقدار
WeakReferenceإلى مالك دورة الحياة لتجنّب تسريب 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>(...);}
- يلغي
الغرفة:
- تطبع الغرفة الآن رسالة خطأ في وقت التجميع عند إرجاع Pojo في
تحتوي طريقة
@Queryعلى حقل@NonNullلا يُطابق أيًا من والأعمدة في استجابة الاستعلام. إذا كان الحقل هو@Nullable، الغرفة فقط يعرض رسالة تحذير. b/67115337 - تتحقّق الغرفة الآن من الفهارس في الإصدارات الأحدث من نظام التشغيل. b/63132683
- تختار الغرف أداة إنشاء بدون وسيط بشكل تلقائي إذا كانت هناك عدة واجهات الأشكال الإنشائية المطابقة في بوجو. b/67353427
- يمكن أن تكون المفاتيح الأساسية الأحادية العمود
Nullableإذا كانت فيIntegerأوLong. b/67086876 - تتعامل أداة تتبُّع حالات العطل مع إعادة الدخول على نحو صحيح في وضع الاختبار. b/65471397
- تتحقّق الغرفة الآن من الأحرف غير الصالحة في العمود والجدول.
الأسماء في وقت التجميع (أحرف غير صالحة:
`و"). b/64749111
- تطبع الغرفة الآن رسالة خطأ في وقت التجميع عند إرجاع Pojo في
تحتوي طريقة
21 أيلول (سبتمبر) 2017
مع هذا الإصدار، تصل كل وحدات المكوّنات الهندسية إلى beta 1 على الأقل
(باستثناء مكتبة الصفحات الجديدة وهي alpha 2).
ولا نخطط لإجراء أي تغييرات أخرى في واجهة برمجة التطبيقات. قد تحدث تغييرات غير مخطط لها، ولكن
لتغيير أي واجهة برمجة تطبيقات قبل أن تكون قيمة 1.0.0 ثابتة، ومن غير المرجّح أن يحدث ذلك.
- LifecycleActivity ستتم إزالة LifecycleFragment قبل تثبيت
1.0.0. هم لا تكون مطلوبة عند استخدام مكتبة الدعم26.1.0أو الإصدارات الأحدث.
على عكس مرحلة ألفا، من المقرر أن تكون المرحلة التجريبية قصيرة جدًا.
تغييرات الإصدار
- أصبحت إضافات مراحل النشاط والغرفة الآن "
beta 1" - أصبحت عملية الترحيل الآن
alpha 2 - لا يتم إجراء أي تغييرات في "مراحل الحياة" (وقت التشغيل والمحادثات المشتركة) و"وحدة التحكّم الأساسية" (ARC). كلا هذين العنصرين
هي الإصدار
1.0.0منذ 13 أيلول (سبتمبر).
العناصر الجديدة
تتوفّر الآن لدورات الحياة عنصر جديد باسم "
common-java8". يحتوي هذا العنصر على واجهة جديدة تسمى DefaultLifecycleObserver. أي لديها عمليات تنفيذ افتراضية لجميع طرق دورة الحياة. إذا كنت تستخدم لغة 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
كلا هذين العنصرين يعتمدان بالفعل على الغرفة، لذا ما لم تكن تستخدمهما بشكل مباشر، لن تحتاج إلى تغيير أي شيء في ملفات الإصدار.
التغييرات في واجهة برمجة التطبيقات
الغرفة:
- يتيح الآن التعليق التوضيحي @ColumnInfo إعداد تجميع في العمود. b/62007004
- يتم الآن تجاهل حقلَين (
transient) تلقائيًا ما لم تتم إضافة تعليقات توضيحية إليهما باستخدام@ColumnInfo.@Embeddedأو@Relation. b/62600692 - يجب إضافة تعليقات توضيحية إلى المفاتيح الأساسية باستخدام
@NonNullما لم يتم إنشاؤها تلقائيًا. b/64292391- قد يتطلّب هذا التغيير نقل بيانات المخطط. نعتذر عن الإزعاج الذي سبّبته هذه المشكلة.
- تمت إضافة تعليق توضيحي جديد ملائم (@transaction) وهو
يؤدي هذا الإجراء إلى إلغاء طريقة
DAOوتنفيذها داخل إحدى المعاملات.
دعم قاعدة بيانات SQLite:
- تغييرات واجهة برمجة التطبيقات في تهيئة قاعدة البيانات. b/65349673 b/65499876
الترحيل:
- مستندات محسنة حول التنقل في الصفحات تضم المزيد من الأمثلة والتعليقات التوضيحية لسلاسل المحادثات.
إصلاح الأخطاء
- الغرفة:
- تتم معالجة سلاسل Kotlin المتعددة الأسطر بطرق
@Queryبشكل صحيح. b/65809374
- تتم معالجة سلاسل Kotlin المتعددة الأسطر بطرق
- الترحيل:
- لم تعُد عناصر عملية الترحيل تعتمد على junit بعد الآن. b/65690261
1.0.0 ألفا 9-1 - 13 أيلول (سبتمبر) 2017
هذا إصدار رئيسي يتضمّن عناصر دورة الحياة الأساسية (وقت التشغيل والاستخدام المشترك) والنواة المقوّسة (شائعة)
الوصول إلى الإصدار الثابت 1.0.0.
إلى جانب هذا التغيير، تعتمد الآن Support Library 26.1.0 على هذه المكتبات. كل من AppCompatActivity وجزء الدعم تنفيذ واجهة LifecycleOwner.
يعتمد هذا الإصدار أيضًا على 26.1.0 مكتبة الدعم للاستفادة من الدمج الجديد.
مكتبة جديدة: نقل البيانات
يتضمّن هذا الإصدار أيضًا مكتبة جديدة يُطلق عليها اسم التنقّل بين الصفحات، وهي تتيح تحميل المحتوى بحجم كبير بسهولة.
مجموعات البيانات في RecyclerView في مجموعات عند الضرورة. تم إلغاء ترقيم الصفحات باسم alpha1.
وسيكون له دورة إصدار خاصة به
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف الفئات التالية نهائيًا وستتم إزالتها في إصدار مستقبلي:
إصلاح الأخطاء
تتم الآن إضافة تعليقات توضيحية إلى الصفوف التي تم إنشاؤها باستخدام
@Generatedإذا كان التطبيق يحتوي على التعليق التوضيحي في مسار classpath. b/35754819تم إصلاح خطأ مقارنة المراقب في MediatorLiveData. b/64413274
طلبات بحث SQLite
WITHمتوافقة الآن مع [LiveData]. [ref-LiveData] b/62510164تم إصلاح الخطأ الذي لا يمكن فيه لـ validationTracker إرسال القائمة الصحيحة إذا كان هناك أكثر من جدول واحد المرصود. b/65099281
تم إصلاح الخطأ الذي كان يؤدي إلى إنشاء ملفات مختلفة في الغرفة على نظام التشغيل Windows. b/64470691
أصبحت LifecycleObservers في الحزمة الجذر متاحة الآن. b/62310817
1.0.0 ألفا 9 - 16 آب (أغسطس) 2017
إصلاح الأخطاء
- تم إصلاح خطأ في LiveData، حيث تم تجاهل Observer الثاني عندما تمت إزالة أول مرة من طريقة
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، ما أدى إلى تعطُّل قراءة LifecycleObserver.تم إصلاح DevableationTracker لقواعد البيانات المخصصة b/63162311
1.0.0 ألفا 6 - 25 تموز (يوليو) 2017
تغيّرات السلوك
تم تغيير ترتيب استدعاءات LifecycleObserver. كان يتم استدعاء المراقبين سابقًا دائمًا حسب ترتيب إضافتهم: إذا تمت إضافة
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 بشكل ثابت في @inline. 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 إلى الغرفة.
إصلاح الأخطاء
تم إصلاح
@Deleteطلب بحث بدون أي مَعلمات. b/63608092يتم التحقّق من نوع الغرفة الثابتة للمستخدمين الذين يتلقّون المساعدة والقائمين بالضبط. b/63733651
1.0.0 ألفا 4 - 11 تموز (يوليو) 2017
التغييرات في واجهة برمجة التطبيقات
تمت إضافة طريقة ملائمة جديدة (
runInTransaction()) إلى RoomDatabase.يمكن أن تحتوي الطرق
@Insertو@Deleteو@Updateالآن على مَعلمات من أنواع مختلفة من العناصر. b/62682405
إصلاح الأخطاء
تم إصلاح معالجة
byte[]في@Daoطريقة. b/62460045تستخدم عملية تأكيد نقل البيانات في الغرفة الآن مقارنة غير حساسة لحالة الأحرف. b/62875382
تم إصلاح إعدادات Proguard لعنصر "مراحل الحياة". b/62113696
1.0.0 ألفا 3 - 15 حزيران (يونيو) 2017
التغييرات في واجهة برمجة التطبيقات
تتيح أداة
@OnLifecycleEventاستخدام مَعلمة حدث واحدة فقط الآن. يُعد هذا تغييرًا في الاستعداد لدعم Java 8 حتى نتمكن من الانتقال إلى بالطرق الافتراضية في المستقبل. فيما يتعلق بهذا التغيير، يمكن أن تتلقّى طرق@OnLifecycleEvent(ON_ANY)التي تتضمّن تعليقات توضيحية مَعلمة ثانية من النوع.Event(المَعلمة الأولى هيLifecycleOwner). راجِع مستندات رحلة المستخدِم للحصول على التفاصيل.تم نقل صفَّين
LifecycleActivityوLifecycleFragmentإلى عناصرandroid.arch.lifecycle:extensions.تستقبل MigrationTestHelper مثيل instrumentation بدلاً من
Contextمن أجل قراءة المخطط من مواد العرض التجريبية وإنشاء قاعدة البيانات في سياق التطبيق.تعليقات
@Insertو@Deleteو@Updateالتوضيحية في@DAOطريقة يمكن أن يكون نوع المعلمة الآنIterable. b/62259820
إصلاح الأخطاء
لم يعُد يتم استدعاء الطرق التي تم تجاوزها مع أحداث مراحل النشاط عدة مرات.
تم التعامل مع معلَمات
INالمتعدّدة بشكل سليم الآن. b/62608681يمكن أن تحتوي فئات DAO التجريدية الآن على دالة إنشاء تتلقى دالة
@Databaseمثال. b/38488747يمكن لـ
DAOالآن أن يحتوي على فئة/واجهة مميزة مع معلَمات النوع. b/62103620
1.0.0 Alpha 2 - 2 حزيران (يونيو) 2017
التغييرات في واجهة برمجة التطبيقات
تتلقى الآن دالة معاودة الاتصال UnknownationTracker قائمة بأسماء الجداول التي تم تغييرها. (b/38468740)
تم تقليل سطح واجهة برمجة التطبيقات لفئة SupportSQLiteDatabase. (b/38481640)
إصلاح الأخطاء
- ملفات Proguard لدورات الحياة (b/62113696)
- فقدان البيانات مع محوّلات النوع. (b/62100716)
- السماح بعرض
Long[]من@Insertطلب بحث
1.0.0 ألفا 1 - 17 أيار (مايو) 2017
MinSDK: 14
تنبيهات عامة
وعلى الرغم من أننا أجرينا الكثير من الاختبارات قبل الإطلاق، إلا أن مكونات البنية لا تزال في مرحلة الإصدار الأولي حاليًا. إذا كنت بصدد إنشاء تطبيق إنتاج، يُرجى العلم بأنّ واجهة برمجة التطبيقات ستتغيّر قبل الإصدار 1.0 وقد لا تكون فعّالة بالكامل. إذا لم تكن تشعر بالارتياح تجاه تصحيح الأخطاء في المكتبات التي تستخدمها، ننصحك بتجربة "المكوّنات الأساسية" في المشاريع الجانبية أولاً.
لا ننصح جميع المستخدمين بنقل البيانات اليوم. سيكون لدينا دليل نقل بيانات جاهز للإصدار 1.0 من مكونات البنية.
القيود والمشاكل المعروفة
- دورة الحياة
FragmentوActivityCompatفي مكتبة الدعم لم يتم تنفيذ واجهةLifecycleOwnerحتى الآن. سيتم تطبيقها عندما تصل المكونات المعمارية إلى الإصدار 1.0.0.