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. - تم النقل لاستخدام تبعية
Room
1.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()
false
b/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
" تم إجراءfinal
aosp/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
معCANCELLED
State
خلالListenableWorker.onStopped()
. - يتم التعامل مع
null
Result
على أنّها إخفاقات فيListenableWorker
. b/120362353 - إصلاح نظري لأجهزة Shield اللوحية التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات، ما يؤدي أحيانًا إلى ظهور خطأ
IllegalArgumentException
b/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()
لتعديل الرمز الحالي. وقد نفّذنا هذا الإجراء لتقليل عدد مساحات عرض واجهة برمجة التطبيقات وعدد الطرق. - ستؤدي محاولة إجراء
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
الوسيطات الآمنة
- أصبحت الوسيطات الآمنة الآن لها تبعية ثابتة للمكوّن الإضافي لنظام 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 هي الآنNonNull
b/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.index
setDemoControllerIndex
b/79995048. - مثلاً: سيصبح
action_show_settings
actionShowSettings
b/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
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->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 8
Kotlin
b/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.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
بما يلي تحكم أكثر دقة في إصدارات المخطط التي تبدأ منها عمليات الترحيل المدمرة مسموح به (مقارنةً بأداة 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.Builder
DataSource
+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.