WorkManager
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 23 سبتمبر 2026 | 2.12.0 | - | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على WorkManager، يجب تضمين مستودع Google Maven في مشروعك:
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
أنيق
dependencies { def work_version = "2.12.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.12.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
للحصول على معلومات حول استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 2.12
الإصدار 2.12.0
23 سبتمبر 2026
تم طرح androidx.work:work-*:2.12.0. يتضمّن الإصدار 2.12.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.11.0:
- تم تعديل
minSdkمن الإصدار 23 إلى الإصدار 24 من واجهة برمجة التطبيقات - يضيف عنصر جديد،
androidx.work:work-analytics، واجهات برمجة تطبيقات تجريبية لمقاييس العمل لفحص سجلّ تنفيذ عملك. تسجّلWorkMetricsInfoRepositoryWorkMetricsInfoلكل طابع زمني لحدث العمل، ومدة المنفِّذ، وإجمالي وقت التشغيل التراكمي، وتفاصيل محاولات التشغيل. يمكن قراءة المقاييس من خلال طلبات بحث قابلة للإعداد أو ملاحظتها كـFlowللعمل المنجز. تتطلّب واجهات برمجة التطبيقات هذه الموافقة على@ExperimentalWorkMetricsApi. - تتيح لك واجهات برمجة التطبيقات التجريبية الجديدة لمتتبِّع الأحداث مراقبة تنفيذ
WorkManagerوجدولته مباشرةً. تقبلConfiguration.Builderالآن متتبِّعًا لأحداث تنفيذ المنفِّذ (البدء والإنهاء والإيقاف والاستثناءات غير المعالَجة) ومتتبِّعًا لأحداث الجدولة (الإضافة إلى قائمة الانتظار وإلغاء الحظر والتعديل والإلغاء والمتطلبات الأساسية التي لم يتم استيفاؤها). هذه هي اللبنات الأساسية التي تستند إليهاwork-analytics.
الإصدار 2.12.0-rc01
12 أغسطس 2026
تم طرح androidx.work:work-*:2.12.0-rc01. يتضمّن الإصدار 2.12.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ إملائي في الفئة
WorkConstraintsDaoTestواسم الملف. (I0868d) - تم تقليل تعارض القفل في
PackageManagerServiceأثناء بدء تشغيلWorkManagerمن خلال طلب بيانات من ذاكرة التخزين المؤقت لحالات التفعيل التلقائي لبيان المكوّن فيPackageManagerHelper. (Id84ba، b/528755807) - تم إصلاح مشكلة كانت تؤدي إلى نقل خطافات أحداث يتم في مراحل نشاط التنفيذ وتتبُّع بيانات القياس عن بُعد على الفور إلى الجيل التالي للتحديث عند استدعاء
WorkManager.updateWorkأثناء تشغيل المنفِّذ بشكل نشط. (Ie80e8، b/511074795)
الإصدار 2.12.0-beta01
29 يوليو 2026
تم طرح androidx.work:work-*:2.12.0-beta01. يتضمّن الإصدار 2.12.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة تسرُّب الذاكرة عند رصد استثناءات المنفّذ (I3404e، b/532588487)
- تحسين عملية نشر الإلغاء في
RemoteListenableWorkerلكي تؤدي عمليات إيقاف العامل التي يبدأها النظام إلى إلغاء الروتينات الفرعية البعيدة بشكل صحيح وإعادة جدولة العمل، بينما تؤدي عمليات الإلغاء الذاتي للعاملين البعيدين إلى وضع علامة FAILED على العمل بشكل صحيح. ملاحظة: يتم حاليًا حظر هذا السلوك باستخدام العلامة المحظورة لمجموعة المكتباتConfiguration.isRemoteCancellationPropagationFixEnabled(القيمة التلقائية هي false) للسماح بعملية التحقّق التجريبية وضمان بقاء مقاييس الموثوقية ثابتة قبل إزالة العلامة نهائيًا. (I387f3، b/420724435)
الإصدار 2.12.0-alpha01
15 يوليو 2026
تم طرح androidx.work:work-*:2.12.0-alpha01. يتضمّن الإصدار 2.12.0-alpha01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
WorkMetricsQueryلفلترة معلومات المقاييس (I132b4، b/522338412) - نفِّذ
workerDurationMillisوtotalRuntimeMillisفيWorkMetricsInfoلتتبُّع مدة تنفيذ المنفِّذ وإجمالي وقت التشغيل التراكمي. (I57f65، b/507212208) - تمت إضافة الدالتَين الإنشائيتَين
retentionDuration(المدة، المستوى 26 من واجهة برمجة التطبيقات أو أعلى) وretentionTime/retentionTimeUnit(المستوى 23 من واجهة برمجة التطبيقات أو أعلى) إلىWorkMetricsInfoRepositoryللسماح بإزالة المقاييس القديمة، مع ضبط القيمة التلقائية على 7 أيام. (Ifdf2e، b/522338412) - إضافة واجهة برمجة تطبيقات لسير العمل عند اكتمال
WorkMetricsInfo(I11ec2، b/507212999) - إضافة التعليق التوضيحي التجريبي الناقص إلى فئات
work-analytics(I1a055، b/528112001) - لدى "
androidx.benchmark" الآنminSdkيبلغ 24. (Ic2a85) - تنفيذ
stopReasonCountsوexplicitRetryCountوrunAttemptCountفيWorkMetricsInfo(I95498، b/507212225) - تنفيذ واجهات برمجة التطبيقات
WorkMetricsInfoومخطط قاعدة البيانات لتتبُّع سجلّ تنفيذ العمل، بما في ذلك الطوابع الزمنية للإضافة إلى قائمة الانتظار وإلغاء الحظر والبدء والانتهاء لأول مرة (I163e9، b/479123623، b/507212482) - إضافة واجهة برمجة تطبيقات تجريبية لإيقاف الجدولة الانتهازية داخل العملية (I1062d، b/513299442)
- إضافة واجهة برمجة تطبيقات تجريبية للاستماع إلى أحداث جدولة
WorkManager(I14487، b/448485695) - إضافة اسم فئة العامل إلى
WorkInfo(I57da1، b/448485695) - إضافة علامات توضيح أكثر دقة إلى واجهة برمجة التطبيقات التجريبية لمتتبِّع الأحداث (Icaa8e، b/448485695)
- إضافة واجهة برمجة تطبيقات جديدة تتيح استرداد مصفوفات السلاسل القابلة للتصغير من مثيلات الفئة
Data(I78bc3، b/383071402) - إنشاء عنصر
work-analytics(Idc7c2، b/465357612) - إضافة واجهة برمجة تطبيقات تجريبية لضبط متتبِّع لأحداث تنفيذ المنفِّذ (I06b38، b/448485695)
إصلاح الأخطاء
- استخدام
Dispatchers.Defaultبدلاً من مجموعة سلاسل المحادثات المخصّصة في إعدادات WM التلقائية (Ic2c42، b/506239869) - تحسين الاختبارات وإضافة اختبارات لإدارة العمال السيئين (I500f3، b/506239869)
- تم إصلاح
ConcurrentModificationExceptionفي عملية إرسال أداة معالجة تنفيذWorkManager's. (I4cc18، b/506239869) - تم إصلاح الأعطال في العملية في
WorkManagerعند تسجيل عمليات رد الاتصال المتعلقة بقيود الشبكة بسبب عدم توفّر أذوناتACCESS_NETWORK_STATE. (I7045a، b/446013734) - تحسين تفاصيل السجلّ عند تفعيل سجلّات تصحيح الأخطاء (Id9e5f، b/491209738)
- إصلاح الخطأ الذي يؤدي إلى عدم جدولة العمل الذي تمت إعادة محاولته باستخدام نظام التشغيل (I452fc وb/504085166 وb/517339607)
- تم إصلاح رابط المستند المرجعي
Configuration.Provider(Ieedb7، b/340913210) - تم إيقاف حظر عمليات ربط الأحداث (I27cd8، b/448485695)
- تعيد
WorkManagerالآن محاولة عملية الإعداد عند حدوث خطأ عامSQLiteException. (I98436، b/485368721) - تم إصلاح مشكلة كان يمكن أن يتلقّى فيها المطوّرون رمز سبب إيقاف غير موجود وهو 0 من خلال ربطه بـ
WorkInfo.STOP_REASON_UNKNOWN. (I0b175، b/479314734) - تم إصلاح مشاكل إضافية تتعلّق بتعذُّر إجراء طلبات الشبكة من الخلفية حتى عند استيفاء قيود الشبكة (Ic7f73، b/445324855)
- التعامل مع استثناء الأمان في
NetworkStateTracker(I4b7ca، b/480123154) - التأكّد من حصول عناصر جذب التنفيذ على لقطة
WorkInfoدقيقة (I25ebb، b/448485695) - تم إصلاح مشكلة تعذُّر تنفيذ طلبات الشبكة في الخلفية على نظام التشغيل Android 15. (I60f24 وI8a0a2 وb/452081708) (I5abb7 وb/465016918)
- تم إصلاح المشكلة المتمثلة في عدم إعادة جدولة
WorkRequestالدورية التي يتعذّر تنفيذها بسبب استثناء لم يتم رصده. (Ia6b92، b/443879071)
الإصدار 2.11
الإصدار 2.11.2
25 مارس 2026
تم طرح androidx.work:work-*:2.11.2. يتضمّن الإصدار 2.11.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشاكل إضافية تتعلّق بتعذُّر إجراء طلبات الشبكة من الخلفية حتى عند استيفاء قيود الشبكة (Ic7f73 وb/445324855).
- التعامل مع استثناء الأمان في
NetworkStateTracker(I4b7ca، b/480123154) - تم إصلاح المشكلة المتمثلة في عدم إعادة جدولة
WorkRequestالدورية التي يتعذّر تنفيذها بسبب استثناء لم يتم رصده. (Ia6b92، b/443879071)
الإصدار 2.11.1
28 يناير 2026
تم طرح androidx.work:work-*:2.11.1. يتضمّن الإصدار 2.11.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح قيود حالة الشبكة التي لا يتم تجاوزها عند حظر الاتصال على الإصدار 15 من نظام التشغيل Android والإصدارات الأحدث (I5abb7، b/465016918)
- تم إصلاح مشكلة عدم مراعاة حالة الحظر للقيمة الأولية عند تتبُّع قيود الشبكة الثابتة. (I8a0a2، b/452081708)
- تم إصلاح مشكلة تتعلّق بتمرير قيود طلب الشبكة أثناء حظر الاتصال على الإصدار 15 من نظام التشغيل Android والإصدارات الأحدث. (I60f24، b/452081708)
الإصدار 2.11.0
22 أكتوبر 2025
تم طرح androidx.work:work-*:2.11.0. يتضمّن الإصدار 2.11.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.10.0:
- تم تعديل
minSdkمن المستوى 21 إلى المستوى 23 من واجهة برمجة التطبيقات. - تمت إضافة واجهة برمجة التطبيقات
setRemoteSessionTimeoutMillisفي أداة إنشاء الإعداداتWorkManagerللسماح بضبط مقدار الوقت الذي تظل فيه جلسةRemoteWorkManagerنشطة منذ آخر استخدام لها.
الإصدار 2.11.0-rc01
8 أكتوبر 2025
تم طرح androidx.work:work-*:2.11.0-rc01. يتضمّن الإصدار 2.11.0-rc01 هذه التعديلات.
الإصدار 2.11.0-beta01
24 سبتمبر 2025
تم طرح androidx.work:work-*:2.11.0-beta01. يتضمّن الإصدار 2.11.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أضِف
stopRunningWorkWithReasonإلىWorkManagerTestDriver. (Ie53b2، b/439955564)
إصلاح الأخطاء
- إصلاح مشكلة توقّف الخدمة التي تعمل في المقدّمة عند توفّر أوامر في انتظار التنفيذ (Iae822، b/432069314)
- إصلاح مشكلة تعذُّر إلغاء ربط الخدمة البعيدة في عامل الروتين الفرعي البعيد (I842f2، b/247113322)
الإصدار 2.11.0-alpha01
27 أغسطس 2025
تم طرح androidx.work:work-*:2.11.0-alpha01. يتضمّن الإصدار 2.11.0-alpha01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تم تعديل minSdk من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 لواجهة برمجة التطبيقات (Ibdfca، b/380448311، b/435705964، b/435705223)
- تمت إضافة واجهة برمجة التطبيقات
setRemoteSessionTimeoutMillisفي أداة إنشاء الإعدادات في WorkManager لإتاحة ضبط مقدار الوقت الذي تظل فيه جلسة RemoteWorkManager نشطة منذ آخر استخدام لها. (Ib23c8) - أضِف واجهة برمجة تطبيقات تجريبية في
WorkRequest.Builderلتطبيق التراجع التدريجي عند مقاطعة النظام للعمل. (Ie2dc7، b/335513480) - إضافة واجهة برمجة تطبيقات اختبارية لتمرير فئة منفِّذ مختلفة إلى
TestListenableWorkerBuilderعن الفئة التي يتم إنشاؤها لتوفير عمليات تنفيذ مخصّصةWorkerFactory(If6bff، b/389154854)
إصلاح الأخطاء
- تخزين إمكانات الشبكة مؤقتًا في
SharedNetworkCallbackلمنع عمليات الاتصال بين العمليات غير الضرورية (Ie4027، b/427115602) - تم إصلاح مشكلة في تقييم قيود الشبكة، حيث إنّ عناصر العمل التي تلي العنصر الأول لا تحصل على إمكانات الشبكة الحالية، بل يتم عرض الخطأ
ConstraintsNotMetبعد انتهاء المهلة (Ib6a66، b/427115602)
الإصدار 2.10
الإصدار 2.10.5
24 سبتمبر 2025
تم طرح androidx.work:work-*:2.10.5. يتضمّن الإصدار 2.10.5 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة توقّف الخدمة التي تعمل في المقدّمة عند توفّر أوامر في انتظار التنفيذ (Iae822، b/432069314)
الإصدار 2.10.4
10 سبتمبر 2025
تم طرح androidx.work:work-*:2.10.4. يتضمّن الإصدار 2.10.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إمكانية إلغاء ربط الخدمة البعيدة في
RemoteCoroutineWorker(I842f2، b/247113322)
الإصدار 2.10.3
30 يوليو 2025
تم طرح androidx.work:work-*:2.10.3. يتضمّن الإصدار 2.10.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم استيفاء القيود المفروضة على الشبكة لدى العمال الذين لديهم قيود مماثلة للقيود المفروضة على عامل سابق. (b/427115602).
الإصدار 2.10.2
18 يونيو 2025
تم طرح androidx.work:work-*:2.10.2. يتضمّن الإصدار 2.10.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عند استمرار عمل المشغّلين مع طلبات الشبكة والإمكانات التلقائية التي تؤدي إلى إعادة إضافة الإمكانات التي تمت إزالتها، ما يتسبب في سوء سلوك المشغّلين الذين لديهم قيود على الشبكة. (b/409716532)
- تم إصلاح الخطأ الذي كان يتسبّب في عدم تنفيذ العاملين الذين لديهم قيود على الشبكة على الفور بسبب عدم استيفاء القيود على الرغم من توفّر الشبكة والإمكانات. (b/423403088)
الإصدار 2.10.1
23 أبريل 2025
تم طرح androidx.work:work-*:2.10.1. يتضمّن الإصدار 2.10.1 هذه التعديلات.
إصلاح الأخطاء
- تقليل احتمالية طرح
TooManyRequestsExceptionمن تسجيلWorkManagerلـNetworkCallbackمستخدَم لتتبُّع القيود (b/231499040، b309d5).
الإصدار 2.10.0
30 أكتوبر 2024
تم طرح androidx.work:work-*:2.10.0. يتضمّن الإصدار 2.10.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.9.1
- تمت إضافة علامات تتبُّع إلى المهام من
WorkManager، ما يسهّل فهم الأمر adb shell dumpsys jobscheduler، لأنّه سيتضمّن اسم Worker الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبُّع حول المناطق الرئيسية فيWorkManager. - تمت إضافة
Configuration.workerCoroutineContextللتحكّم في أداة الإرسال التي يتم تنفيذCoroutineWorkerفيها. - يمكن للمطوّرين تحديد
NetworkRequestكقيد على عامل من خلال طريقةConstraints.setRequiredNetworkRequest. يتيح ذلك التحكّم بشكل أدق في الشبكة التي يجب أن يعمل عليها هذا العامل. - تم الآن تجميع الإصدار
WorkManager2.10.0 باستخدام حزمة SDK 35، ويتضمّن تغييرات مختلفة لتحقيق التوافق مع حزمة SDK 35.
الإصدار 2.10.0-rc01
24 أكتوبر 2024
تم طرح androidx.work:work-*:2.10.0-rc01. يتضمّن الإصدار 2.10.0-rc01 هذه التعديلات.
الإصدار 2.10.0-beta01
2 أكتوبر 2024
تم طرح androidx.work:work-*:2.10.0-beta01. يتضمّن الإصدار 2.10.0-beta01 هذه التعديلات.
الإصدار 2.10.0-alpha04
18 سبتمبر 2024
تم طرح androidx.work:work-*:2.10.0-alpha04. يتضمّن الإصدار 2.10.0-alpha04 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أضِف سبب الإيقاف
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTعند إيقاف عامل يعمل في المقدّمة بسبب انتهاء مهلة التنفيذ استنادًا إلى نوع الخدمة التي تعمل في المقدّمة. (Ibd0af)
الإصدار 2.10.0-alpha03
4 سبتمبر 2024
تم طرح androidx.work:work-*:2.10.0-alpha03. يتضمّن الإصدار 2.10.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة علامات تتبُّع إلى المهام من
WorkManager، ما يسهّل فهم الأمر adb shell dumpsys jobscheduler، لأنّه سيتضمّن اسم Worker الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبُّع حول المناطق الرئيسية فيWorkManager.
التغييرات في واجهة برمجة التطبيقات
- تم الآن تجميع الإصدار 2.10.0 من WorkManager باستخدام حزمة تطوير البرامج (SDK) 35.
- تم إصلاح مشكلة انتهاء المهلة في مهام الخلفية التي تعمل في المقدّمة من النوع "خدمة قصيرة" و"مزامنة البيانات"، ما يؤدي إلى حدوث خطأ ANR عندما لا تستدعي
WorkManagerالدالةstopSelf(). لا ينطبق هذا الحلّ إلا على الأجهزة التي تعمل بالإصدارين 34 و35 من واجهة برمجة التطبيقات حيث تم تقديم أنواع الخدمات التي تعمل في المقدّمة. (ca06b2، b/364508145) - واجهات برمجة تطبيقات
WorkerParametersجديدة تتيح تبديل العملية البعيدة التي يرتبط بهاWorkerعند استخدامWorkerFactory. (Ibdc8a وIe8a90 وI7373f)
إصلاح الأخطاء
- تم إصلاح تعطُّل ناتج عن محاولة
WorkManagerإعادة تشغيل منفِّذ يعمل لفترة طويلة (أي منفِّذ يعمل في المقدّمة) عندما تم إبطال أذونات Android 14 الأساسية لنوع العمل الذي يتم تنفيذه في المقدّمة. (b/333957914) - تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP) بالتحديث إلى الإصدار 8.1 أو الإصدارات الأحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)
الإصدار 2.10.0-alpha02
17 أبريل 2024
تم طرح androidx.work:work-*:2.10.0-alpha02. يتضمّن الإصدار 2.10.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة إمكانية إرسال فترات التتبُّع من خلال
@RestrictToTracerقابلة للضبط فيWorkManager. (I17d7f، b/260214125) - تمت إضافة
Configuration.workerCoroutineContextللتحكّم في أداة الإرسال التي يتم تنفيذCoroutineWorkerفيها. يساعد ذلك في تجنُّب استخدامDispatchers.DefaultفيWorkManagerتمامًا. (Icd1b7) - إضافة معالجات استثناء مخصّصة للعاملين (Ib1b74، b/261190695)
- يمكن الآن إنشاء
OneTimeWorkRequest.BuilderوPeriodicWorkRequest.BuilderباستخدامKClassبدلاً منClass:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6) - تم نقل الفئة
WorkManagerإلى Kotlin. توفّر الآن الطرق التي تعرضLiveDataأوListenableFutureأوFlowمعلومات صحيحة عن إمكانية قبول القيم الخالية. وقد يتطلّب ذلك إجراء تغييرات في الرمز المصدر الخاص بالعملاء، إذا كانت افتراضات إمكانية قبول القيم الفارغة في هذا الرمز غير صحيحة. (If6757)
الإصدار 2.10.0-alpha01
24 يناير 2024
تم طرح androidx.work:work-*:2.10.0-alpha01. يتضمّن الإصدار 2.10.0-alpha01 هذه التعديلات.
الميزات الجديدة
- يمكن للمطوّرين تحديد
NetworkRequestكقيد على عامل من خلال طريقةConstraints.setRequiredNetworkRequest. يتيح ذلك التحكّم بشكل أدق في الشبكة التي يجب أن يتم تشغيل هذا العامل عليها.
التغييرات في واجهة برمجة التطبيقات
- إضافة إمكانية تحديد
NetworkRequestكقيد (Id98a1، b/280634452)
الإصدار 2.9
الإصدار 2.9.1
7 أغسطس 2024
تم طرح androidx.work:work-*:2.9.1. يتضمّن الإصدار 2.9.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح تعطُّل ناتج عن محاولة
WorkManagerإعادة تشغيل منفِّذ يعمل لفترة طويلة (أي منفِّذ يعمل في المقدّمة) عندما يكون نوع العمل في المقدّمة يتضمّن أذونات Android 14 الأساسية التي تم إبطالها (b/333957914)
الإصدار 2.9.0
29 نوفمبر 2023
تم طرح androidx.work:work-*:2.9.0. يتضمّن الإصدار 2.9.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.8.0
- إمكانية تتبُّع البيانات من خلال
Flowبدلاً منLiveData، يمكن الآن متابعة تقدّم العامل من خلالWorkManager.getWorkInfosFlowفي Flow وطُرق مشابهة. - تقدّم
WorkManagerالآن تلميحًا حول سبب إيقاف منفِّذ سابقًا. يمكن طلبها من منفِّذ نفسه باستخدام طريقةgetStopReason()أو منWorkInfoباستخدامgetStopReason(). - جدولة دقيقة للعاملين الدوريين من خلال
setNextScheduleTimeOverrideيتيح ذلك إجراء حسابات ديناميكية لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ الميزات المتقدّمة، مثل أوقات إعادة التحميل التكيّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل منفِّذ خلاصة الأخبار قبل تنشيط المستخدم كل صباح بدون حدوث أي انحراف. يجب استخدامExistingPeriodicWorkPolicy.UPDATEمع هذه الأساليب لتجنُّب إلغاء منفِّذ قيد التشغيل حاليًا أثناء جدولة المنفِّذ التالي. - اختبار WorkManager باستخدام الإنتاج المتطابق مع سلاسل المحادثات يمكن استخدام
ExecutorsMode.PRESERVE_EXECUTORSفيinitializeTestWorkManagerللحفاظ على المنفّذين الذين تم ضبطهم فيConfigurationواستخدام سلسلة التعليمات الرئيسية الحقيقية. - تم نقل واجهات برمجة التطبيقات للروتينات الفرعية، مثل
CoroutineWorker، من العنصر الإضافي work-runtime-ktx إلى العنصر الرئيسي work-runtime. وأصبح العنصر work-runtime-ktx فارغًا الآن.
التغييرات في واجهة برمجة التطبيقات
- تمّت إضافة "
stopReason" إلىWorkInfo. تتيح هذه السمة استخدامstopReasonبعد تشغيل العامل. قد يكون ذلك مفيدًا في إعداد التقاريرstopReasonبطريقة قابلة للاستخدام، لأنّه بمجرد إيقاف المنفِّذ، يمكن إيقاف التطبيق نفسه بسرعة كبيرة. (I21386) - السماح بضبط
Clockمن خلال ملف الإعداد واستخدامه لتحديد تسلسل تنفيذ اختبارات Worker (Ic586e) - تمت إضافة طريقة
getStopReason()إلىListenableWorkerالتي تقدّم تلميحًا عن سبب إيقاف العامل. (I07060) - تمت إضافة
WorkManagerTestInitHelper#closeWorkDatabase()لتجنُّب تحذير Closeguard بشأن الموارد التي تم تسريبها. (Ia8d49) - أصبحت طريقة وضع تصميم
WorkInfoمتاحة للجميع الآن، ما قد يكون مفيدًا في الاختبار. (Ia00b6، b/209145335) - أصبح
work-runtime-ktxفارغًا الآن، وأصبحتCoroutineWorkerوأدوات Kotlin المحدّدة الأخرى متاحة الآن في العنصر الرئيسي لوقت التشغيل. (I71a9a) - تمت إضافة طريقة
setNextScheduleTimeOverride، ما يسمح بضبط جداول العمل الدورية بدقة (I3b4da) - تمت إضافة
getNextScheduleTimeMillisللحصول على معلومات وقت التشغيل المُجدوَل إلىWorkInfo. (I797e4) - تتم إضافة معلومات التأخير الأوّلي والدورية إلى
WorkInfo. (I52f2f) - تمت إضافة طريقة مراقبة العاملين من خلال "عمليات البث" باستخدام الطرق
getWorkInfosByTagFlowوgetWorkInfoByIdFlowوgetWorkInfosForUniqueWorkFlowوgetWorkInfosFlow(If122a) - تمت إضافة تعليقات توضيحية
@RequiresApi(...)غير متوفّرة إلى منشئات وسماتConstraints. وهي الآن متوافقة مع التعليقات التوضيحية المقابلة في دوال الضبط فيConstraints.Builderالتي كانت متوفرة في الإصدارات الأولى منWorkManager. (I6d7d2) - يحتوي
WorkManagerالآن على حدّ أقصى منفصل للعاملين في معرّف الموارد المنتظم للمحتوى لمنحهم خانات مضمونة فيJobSchedulerومنع فقدان تحديثات المحتوى في ظل الحمل الكبير. يمكن ضبط الحدّ الأقصى من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f) - تمت إضافة قيود إلى
WorkInfo. (I162c0)
الإصدار 2.9.0-rc01
18 أكتوبر 2023
تم طرح androidx.work:work-*:2.9.0-rc01. يتضمّن الإصدار 2.9.0-rc01 هذه التعديلات.
- لم يتم إجراء أي تغييرات منذ آخر إصدار تجريبي
الإصدار 2.9.0-beta01
6 سبتمبر 2023
تم طرح androidx.work:work-*:2.9.0-beta01. يتضمّن الإصدار 2.9.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة ثوابت لأسباب الإيقاف التي تعرضها الدالتان
WorkInfo.stopReasonوListenableWorker.stopReason(I0cc00)
الإصدار 2.9.0-alpha02
26 تموز (يوليو) 2023
تم طرح androidx.work:work-*:2.9.0-alpha02. يتضمّن الإصدار 2.9.0-alpha02 هذه التعديلات.
الميزات الجديدة
- تقدّم
WorkManagerالآن تلميحًا حول سبب إيقاف منفِّذ سابقًا. يمكن طلبها من منفِّذ نفسه باستخدام طريقةgetStopReason()أو منWorkInfoباستخدامgetStopReason().
التغييرات في واجهة برمجة التطبيقات
- تمّت إضافة "
stopReason" إلىWorkInfo. تتوفّرstopReasonبعد تشغيل العامل. قد يكون ذلك مفيدًا في إعداد التقاريرstopReasonبطريقة قابلة للاستخدام، لأنّه بمجرد إيقاف عامل، يمكن إيقاف التطبيق نفسه بسرعة كبيرة. (I21386) - السماح بضبط "الساعة" من خلال الإعدادات واستخدامها لتحديد تسلسل تنفيذ اختبارات Worker. (Ic586e)
- تمت إضافة طريقة
getStopReason()إلىListenableWorkerالتي تقدّم تلميحًا عن سبب إيقاف العامل. (I07060) - تمت إضافة
WorkManagerTestInitHelper#closeWorkDatabase()لتجنُّب تحذير Closeguard بشأن الموارد المسروقة. (Ia8d49)
إصلاح الأخطاء
- تمت إضافة إمكانية تجاوز
overrideNextScheduleTimeباستخدامTestDriverوإصلاح المشاكل المتعلّقة بإمكانية الاختبار. (Ic2905)
الإصدار 2.9.0-alpha01
7 يونيو 2023
تم طرح androidx.work:work-*:2.9.0-alpha01. يتضمّن الإصدار 2.9.0-alpha01 هذه التعديلات.
الميزات الجديدة
- إمكانية تتبُّع البيانات من خلال
Flowبدلاً منLiveData، يمكن الآن متابعة تقدّم العامل من خلالWorkManager.getWorkInfosFlowفي Flow وطرق مشابهة. - جدولة دقيقة للعاملين الدوريين من خلال
setNextScheduleTimeOverrideيتيح ذلك إجراء حسابات ديناميكية لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ الميزات المتقدّمة، مثل أوقات إعادة التحميل التكيّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل منفِّذ خلاصة الأخبار قبل تنشيط المستخدم كل صباح بدون انحراف. يجب استخدامExistingPeriodicWorkPolicy.UPDATEمع هذه الأساليب لتجنُّب إلغاء منفِّذ قيد التشغيل حاليًا أثناء جدولة المنفِّذ التالي. - اختبار
WorkManagerمع ميزة مطابقة سلاسل المحادثات يمكن استخدامExecutorsMode.PRESERVE_EXECUTORSللحفاظ على المنفّذين المحدّدين فيConfigurationواستخدام سلسلة التعليمات الرئيسية الفعلية. - تم نقل واجهات برمجة تطبيقات الروتينات المشتركة، مثل
CoroutineWorker، من العنصر الإضافيwork-runtime-ktxإلى العنصر الرئيسيwork-runtime. أصبحwork-runtime-ktxفارغًا الآن.
التغييرات في واجهة برمجة التطبيقات
- أصبح منشئ
WorkInfoمتاحًا للجميع الآن، ويمكن أن يكون ذلك مفيدًا في الاختبار. (Ia00b6، b/209145335) - أصبح
work-runtime-ktxفارغًا الآن، وأصبحتCoroutineWorkerوأدوات Kotlin المحدّدة الأخرى متاحة الآن في العنصر الرئيسيwork-runtime. (I71a9a) - تمت إضافة طريقة
setNextScheduleTimeOverride، ما يسمح بضبط جداول العمل الدورية بدقة (I3b4da) - تمت إعادة تسمية
getEarliestRunTimeMillisإلىgetNextScheduleTimeMillis. (I2bd7a) - تتم إضافة معلومات وقت التشغيل المجدوَلة التالية إلى
WorkInfo. (I797e4) - تتم إضافة معلومات التأخير الأوّلي والدورية إلى
WorkInfo. (I52f2f) - تمت إضافة طريقة مراقبة العاملين من خلال "عمليات البث" باستخدام الطرق
getWorkInfosByTagFlowوgetWorkInfoByIdFlowوgetWorkInfosForUniqueWorkFlowوgetWorkInfosFlow(If122a) - تمّت إضافة تعليقات توضيحية
@RequiresApi(...)الناقصة إلى أدوات إنشاء وسمات Constraints. وهي الآن متوافقة مع التعليقات التوضيحية المقابلة في دوال الضبط فيConstraints.Builderالتي كانت متوفرة في الإصدارات الأولى منWorkManager. (I6d7d2) - يفرض
WorkManagerالآن حدًا منفصلاً على عدد العاملين في معرّف الموارد المنتظم للمحتوى لمنحهم خانات مضمونة فيJobScheduler، وذلك لتجنُّب فقدان تحديثات المحتوى في ظل الحمل الكبير. يمكن ضبط الحدّ من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f) - تمت إضافة قيود إلى
WorkInfo. (I162c0)
الإصدار 2.8
الإصدار 2.8.1
22 مارس 2023
تم طرح androidx.work:work-*:2.8.1. يتضمّن الإصدار 2.8.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ ANR في
RescheduleReceiverالذي لم يكن يتعامل بشكل صحيح مع عمليتَي بث متزامنتَين. (b/236906724)
الإصدار 2.8.0
8 فبراير 2023
تم طرح androidx.work:work-*:2.8.0. يتضمّن الإصدار 2.8.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.7.0
الميزات الجديدة
- تمت إضافة إمكانية تعديل
WorkRequestsبطريقة غير مزعجة، مع الحفاظ على وقت الإضافة الأصلي والتسلسل وما إلى ذلك. يمكنك الاطّلاع على مشاركة المدوّنة التفصيلية حول هذه الميزة، بالإضافة إلى مستندات Javadoc الخاصة بـWorkManager.updateWorkوExistingPeriodicWorkPolicy.UPDATEلمزيد من التفاصيل.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWorkلتعديل العمل مع الحفاظ على وقت إضافته إلى قائمة الانتظار الأصلي وتسلسله.(I9a248، b/219446409) - تمّت إضافة
ExistingPeriodicWorkPolicy.UPDATE. تتيح هذه السياسة تعديل مهمة دورية حسب الاسم. وهي تشبهREPLACEالحالية، ولكنّها أقل تدخّلاً: فهي لا تلغي المنفِّذ إذا كان قيد التشغيل حاليًا، وتحافظ على وقت الإضافة إلى قائمة الانتظار، ويتم احتساب التأخير الأولي والمدة من وقت الإضافة الأصلي إلى قائمة الانتظار، وليس من وقت التعديل. تم إيقافREPLACEنهائيًا للحدّ من الالتباس بينREPLACEوUPDATEاللذين يتشابهان كثيرًا في الاسم. إذا كنت تريد الاحتفاظ بالدلالات السابقة لـREPLACE، يمكنك استخدامCANCEL_AND_REENQUEUEالمضافة حديثًا، وهي مطابقة لـREPLACE. (I985ed، b/219446409) - تمت إضافة إمكانية اعتراض استثناءات الجدولة من خلال توفير
Consumer<Throwable>عبر setSchedulingExceptionHandler) - تمت إضافة إمكانية تقديم
Consumer<Throwable>من خلال setInitializationExceptionHandler لتحديد ما إذا كانت هناك مشاكل عند محاولة إعداد WorkManager. - تم نقل أدوات المساعدة المضمّنة في
OneTimeWorkRequestوPeriodicWorkRequestمنandroidx.work:work-runtime-ktxإلىandroidx.work:work-runtime(I0010f، b/209145335) - تمت إضافة طرق المساعدة
WorkQuery.fromIdsوWorkQuery.fromStatesوWorkQuery.fromUniqueWorkNamesوWorkQuery.fromTagsلإنشاءWorkQueryمباشرةً. (b/199919736) (If48f2، b/199919736) - تمت إضافة
getForegroundInfoإلى القائمةWorker. (Ic1ead) - يتضمّن
RxWorkerلكلّ من RxJava 2 وRxJava 3 الآنsetForegroundالذي يعرضCompletableويمكن استخدامه بدلاً منsetForegroundInfoAsyncالذي يعرضListenableFuture - يحتوي
RxWorkerلكل من RxJava 2 وRxJava 3 علىgetForegroundInfoالذي يعرضSingleويمكن استخدامه بدلاً منgetForegroundInfoAsyncالذي يعرضListenableFuture. (b/203851459) - يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام
Constraints.Builder، ما يوفّر الوقت لمستخدمي Kotlin. (Idc390، b/137568653) - تمت إضافة إمكانية التحقّق مما إذا تمّت تهيئة
WorkManager. تمت أيضًا إضافة واجهة برمجة تطبيقاتgetConfiguration()جديدة تتيح لمطوّري المكتبات الحصول على الإعدادات التي تمّت تهيئةWorkManagerبها. (I6eff3، b/212300336)
إصلاح الأخطاء
- تم إصلاح مشكلة في أداة الجدولة الحريصة كانت تمنع العاملين من التشغيل فورًا عند التحميل. (I9686b، b/248111307)
- تمت إضافة
@RequiresPermissionإلى واجهات برمجة التطبيقات التي تتطلّب منح إذنPOST_NOTIFICATIONSعلى الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278) - نقل عمليات الإلغاء من
CoroutineScopeإلىListenableFutureعند استخدامsuspendCancellableCoroutine
الإصدار 2.8.0-rc01
7 ديسمبر 2022
تم طرح androidx.work:work-*:2.8.0-rc01. يتضمّن الإصدار 2.8.0-rc01 هذه التعديلات.
الميزات الجديدة
- لا يتضمّن هذا الإصدار أي ميزات جديدة. هذا التحديث هو في الأساس زيادة في رقم الإصدار
الإصدار 2.8.0-beta02
9 نوفمبر 2022
تم طرح androidx.work:work-*:2.8.0-beta02. يتضمّن الإصدار 2.8.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح طريقة
equalsفيWorkInfo، والتي لم تكن تأخذ في الاعتبار معلومات الجيل الجديد. (4977cc)
الإصدار 2.8.0-beta01
5 أكتوبر 2022
تم طرح androidx.work:work-*:2.8.0-beta01. يتضمّن الإصدار 2.8.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في أداة الجدولة الحريصة كانت تمنع العاملين من التشغيل فورًا عند التحميل. (I9686b، b/248111307)
الإصدار 2.8.0-alpha04
7 أيلول (سبتمبر) 2022
تم طرح androidx.work:work-*:2.8.0-alpha04. يتضمّن الإصدار 2.8.0-alpha04 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
WorkerInfo.getGeneration()وWorkerParameters.getGeneration()اللتين تعرضان جيل عامل. يكون للعامل أجيال متعددة، إذا تم تعديله من خلالWorkManager.updateWorkأوWorkManager.enqueueUniquePeriodicWorkباستخدامExistingPeriodicWorkPolicy.UPDATE. يُرجى العِلم أنّه إذا كان العامل قيد التشغيل حاليًا، من المحتمل أن تعرض هذه الطريقة جيلًا أحدث من جيل العامل قيد التشغيل حاليًا إذا حدث تحديث أثناء تنفيذ العامل. (I665c5، b/219446409) (I128a9، b/219446409) - تمت إضافة
InitializationExceptionHandler، وهو معالج استثناءات يمكن استخدامه لتحديد ما إذا كانت هناك مشاكل عند محاولة إعدادWorkManager. (I061de)
الإصدار 2.8.0-alpha03
10 أغسطس 2022
تم طرح androidx.work:work-*:2.8.0-alpha03. يتضمّن الإصدار 2.8.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية تعديل
WorkRequestsبطريقة غير مزعجة، مع الحفاظ على وقت الإضافة الأصلي والتسلسل وما إلى ذلك. يمكنك الاطّلاع علىWorkManager.updateWorkوExistingPeriodicWorkPolicy.UPDATEلمزيد من التفاصيل.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWorkلتعديل العمل مع الحفاظ على وقت إضافته إلى قائمة الانتظار الأصلي وتسلسله.(I9a248، b/219446409) - تمّت إضافة
ExistingPeriodicWorkPolicy.UPDATE. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهي تشبهREPLACEالحالية، ولكنّها أقل تدخّلاً: فهي لا تلغي المنفِّذ إذا كان قيد التشغيل حاليًا، كما أنّها تحتفظ بوقت الإضافة إلى قائمة الانتظار، ويتم احتساب التأخير الأوّلي والفترة من وقت الإضافة الأصلي إلى قائمة الانتظار، وليس من وقت التعديل. تم إيقافREPLACEنهائيًا للحدّ من الالتباس بينREPLACEوUPDATEاللذين يحملان اسمًا مشابهًا جدًا. إذا كنت تريد الاحتفاظ بالدلالات السابقة لـREPLACE، يمكنك استخدامCANCEL_AND_REENQUEUEالمضافة حديثًا، وهي مطابقة لـREPLACE. (I985ed، b/219446409) - تمت إضافة إمكانية اعتراض استثناءات الجدولة من خلال تحديد
SchedulingExceptionHandler. (I033eb) - تم نقل أدوات المساعدة المضمّنة في
OneTimeWorkRequestوPeriodicWorkRequestمنandroidx.work:work-runtime-ktxإلىandroidx.work:work-runtime(I0010f، b/209145335)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermissionإلى واجهات برمجة التطبيقات التي تتطلّب منح إذن POST_NOTIFICATIONS على الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 2.8.0-alpha02
6 أبريل 2022
تم طرح androidx.work:work-*:2.8.0-alpha02. يتضمّن الإصدار 2.8.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام Builder، ما يسهّل الأمر على مستخدمي Kotlin. (Idc390، b/137568653)
- تمت إضافة إمكانية التحقّق مما إذا تمّت تهيئة
WorkManager. تمت أيضًا إضافة واجهة برمجة تطبيقاتgetConfiguration()جديدة تتيح لمطوّري المكتبات الحصول على الإعدادات التي تمّت تهيئةWorkManagerبها. (I6eff3، b/212300336)
الإصدار 2.8.0-alpha01
12 يناير 2022
تم طرح androidx.work:work-*:2.8.0-alpha01. يتضمّن الإصدار 2.8.0-alpha01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة طرق مساعدة
WorkQuery.fromStatesوWorkQuery.fromUniqueWorkNamesوWorkQuery.fromTagsلإنشاء WorkQuery مباشرةً. (If48f2، b/199919736) - إضافة طرق تجريبية في BuildCompat لإصدارات SDK المستقبلية (Iafd82، b/207528937)
- أضِف
getForegroundInfoإلىWorker. (Ic1ead) - تمت إضافة طرق مساعدة
WorkQuery.fromIdsلإنشاء WorkQuery مباشرةً من المعرّفات. (Ie5bdf، b/199919736) - يتضمّن RxWorker الآن
setForegroundيعرضCompletableيمكن استخدامه بدلاً منsetForegroundInfoAsyncالذي يعرضListenableFuture. (I85156) - يتضمّن RxWorker لإصدار RxJava 2 الآن
getForegroundInfoالذي يعرضSingleويمكن استخدامه بدلاً منgetForegroundInfoAsyncالذي يعرضListenableFuture. (I21c91، b/203851459) - يتضمّن RxWorker لإصدار RxJava 3 الآن
getForegroundInfoيعرضSingleيمكن استخدامه بدلاً منgetForegroundInfoAsyncالذي يعرضListenableFuture. (I1ca8a) - يتضمّن RxWorker الآن
setForegroundالذي يعرضCompletableويمكن استخدامه بدلاً منsetForegroundInfoAsyncالذي يعرضListenableFuture. (I992a3، b/203851459)
إصلاح الأخطاء
- نقل عمليات الإلغاء من
CoroutineScopeإلىListenableFutureعند استخدامsuspendCancellableCoroutine(I77e63)
الإصدار 2.7
الإصدار 2.7.1
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.work:work-*:2.7.1. يتضمّن الإصدار 2.7.1 هذه التعديلات.
إصلاح الأخطاء
- يتم نقل عمليات الإلغاء في
CoroutineScopeإلىListenableFutureعند استخدامsuspendCancellableCoroutine. (I77e63) - يتم طرح استثناء على الفور عند وضع علامة "عاجل" على طلبات العمل المؤجّلة. bef1762
الإصدار 2.7.0
13 أكتوبر 2021
تم طرح androidx.work:work-*:2.7.0. يتضمّن الإصدار 2.7.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.6.0
توفّر WorkManager واجهة برمجة تطبيقات
WorkRequest.Builder.setExpedited(...)جديدة للمساعدة في التعامل مع القيود المفروضة على الخدمات التي تعمل في المقدّمة في نظام التشغيل Android 12.عند استخدام
setExpedited(...)، يفوّض WorkManager المهام المعجَّلة في JobScheduler بدءًا من Android 12، مع توفير توافق مع الإصدارات السابقة من Android من خلال التفويض إلى خدمة تعمل في المقدّمة.
الإصدار 2.7.0-rc01
29 سبتمبر 2021
تم طرح androidx.work:work-*:2.7.0-rc01. يتضمّن الإصدار 2.7.0-rc01 هذه التعديلات.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.7.0-beta01.
الإصدار 2.7.0-beta01
1 سبتمبر 2021
تم طرح androidx.work:work-*:2.7.0-beta01. يتضمّن الإصدار 2.7.0-beta01 هذه التعديلات.
الميزات الجديدة
- تقليل التنازع على SQLite المتعدد العمليات عند تهيئة WorkManager
التغييرات في واجهة برمجة التطبيقات
- إزالة واجهات برمجة التطبيقات
@ExperimentalExpeditedWorkلأنّ واجهات برمجة التطبيقات الأساسية للنظام الأساسي في Android 12 (الإصدار S) أصبحت ثابتة. (aosp/1792806)
إصلاح الأخطاء
- تقديم رسالة خطأ أفضل للعاملين الذين يقدّمون خدمات سريعة ولا ينفّذون
getForegroundInfoAsync()(aosp/1809376)
الإصدار 2.7.0-alpha05
21 يوليو 2021
تم طرح androidx.work:work-*:2.7.0-alpha05. يتضمّن الإصدار 2.7.0-alpha05 هذه التعديلات.
يتضمّن هذا الإصدار أيضًا إصلاحات للأخطاء من إصدار WorkManager 2.6.0-beta02.
الإصدار 2.7.0-alpha04
2 يونيو 2021
تم طرح androidx.work:work-*:2.7.0-alpha04.
يتضمّن هذا الإصدار أيضًا التغييرات من الإصدار 2.6.0-beta01.
التغييرات في واجهة برمجة التطبيقات
- لم يعُد
ListenableWorker.setForegroundAsync()متوقفًا نهائيًا. - ننصحك باستخدام واجهة برمجة التطبيقات
WorkRequest.Builder.setExpedited(...)عند الإمكان. لتقديم دعم أفضل للحالات التي لا يخضع فيها التطبيق لقيود على عمليات التطبيقات الظاهرة، يمكن للمطوّرين استخدام واجهة برمجة التطبيقاتListenableWorker.setForegroundAsync(). - في حال استدعاء
ListenableWorker.setForegroundAsync()عندما يخضع التطبيق لقيود الخدمة التي تعمل في المقدّمة، سيؤدي ذلك إلى طرح الخطأ ForegroundServiceStartNotAllowedException.
إصلاح الأخطاء
- عند إعادة جدولة المهام المعجّلة، لن تكون معجّلة بعد ذلك. وتصبح وظائف عادية.
الإصدار 2.7.0-alpha03
21 أبريل 2021
تم طرح androidx.work:work-*:2.7.0-alpha03. يتضمّن الإصدار 2.7.0-alpha03 هذه التعديلات.
الميزات الجديدة
من WorkManager
2.6.0-alpha02: إضافة إمكانية استخدام Workers التي يمكن تشغيلها في أي عملية (Iaf200)من WorkManager
2.6.0-alpha02: تمت إضافةRemoteCoroutineWorkerوهو تنفيذRemoteListenableWorkerيمكن ربطه بعملية بعيدة. (I30578)
التغييرات في واجهة برمجة التطبيقات
- من WorkManager
2.6.0-alpha02:تمت إضافة دعم لقيد الشبكةTEMPORARILY_UNMETERED. (I08d5e) - من WorkManager
2.6.0-alpha02:إتاحة استخدام منفِّذ متعدد العمليات فيsetProgressAsync(). (Ib6d08) - من WorkManager
2.6.0-alpha02:اجعلWorkManagerInitializerعامًا حتى تتمكّنandroidx.startup.Initializers الأخرى من استخدامها كعناصر تابعة. (I5ab11)
الإصدار 2.7.0-alpha02
10 آذار (مارس) 2021
تم طرح androidx.work:work-*:2.7.0-alpha02. يتضمّن الإصدار 2.7.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
- تحديد قابلية التغيّر في
PendingIntentبشكلٍ واضح لإصلاح عُطل عند استهداف الإصدار 12 من نظام التشغيل Android (b/180884673)
الإصدار 2.7.0-alpha01
18 شباط (فبراير) 2021
تم طرح androidx.work:work-*:2.7.0-alpha01. يتضمّن الإصدار 2.7.0-alpha01 هذه التعديلات.
الميزات الجديدة
توفّر WorkManager واجهة برمجة تطبيقات جديدة
WorkRequest.Builder.setExpedited(...)لمراعاة القيود المفروضة على الخدمات التي تعمل في المقدّمة في Android 12.لم يعُد بإمكان التطبيقات تشغيل خدمة تعمل في المقدّمة عندما تكون قيد التشغيل في الخلفية. لذلك، ولتوفير دعم أفضل للعمليات الطويلة الأمد التي كانت مرتبطة سابقًا بدورة حياة إحدى "الخدمات التي تعمل في المقدّمة"، يمكن للتطبيقات وضع علامة
WorkRequestعلى أنّها عاجلة.تحلّ واجهة برمجة التطبيقات هذه محلّ واجهتَي برمجة التطبيقات
setForegroundAsync(...)/setForeground(...)اللتين تم إيقافهما نهائيًا.عند استخدام
setExpedited(...)، يفوّض WorkManager المهام السريعة إلى مهام معجَّلة فيJobSchedulerبدءًا من Android 12، مع توفير توافق مع الإصدارات السابقة من Android من خلال تفويضها إلى الخدمات التي تعمل في المقدّمة.
التغييرات في واجهة برمجة التطبيقات
- إضافة إمكانية استخدام
WorkRequests المستعجلة
الإصدار 2.6.0
الإصدار 2.6.0
1 سبتمبر 2021
تم طرح androidx.work:work-*:2.6.0. يتضمّن الإصدار 2.6.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.5.0
تستخدم WorkManager الآن
androidx.startupلتهيئة WorkManager. إذا كنت قد استخدمتtools:node="remove"ContentProviderالمستخدَم لتهيئة WorkManager في السابق، عليك اتّباع الخطوات التالية بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider><!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />تمت إضافة إمكانية استخدام Workers التي يمكن تشغيلها في أي عملية. (Iaf200)
تمت إضافة
RemoteCoroutineWorkerوهو تنفيذ لـ RemoteListenableWorker يمكن ربطه بعملية بعيدة. (I30578)
الإصدار 2.6.0-rc01
4 أغسطس 2021
تم طرح androidx.work:work-*:2.6.0-rc01. يتضمّن الإصدار 2.6.0-rc01 هذه التعديلات.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.6.0-beta02.
الإصدار 2.6.0-beta02
21 يوليو 2021
تم طرح androidx.work:work-*:2.6.0-beta02. يتضمّن الإصدار 2.6.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- يتم الآن إلغاء ربط
RemoteWorkManagerبشكل صحيح منRemoteWorkManagerService، ما يتيح لـRemoteWorkManagerServiceإجراء عملية التنظيف بشكل صحيح. aosp/1730694 - تتم الآن إزالة ربط
RemoteListenableWorkerبشكل صحيح منRemoteWorkerService، ما يسمح لـRemoteWorkerServiceبتنفيذ عملية التنظيف بشكل صحيح. aosp/1743817 - لا يتم تشغيل
ForceStopRunnableالآن إلا في عملية التطبيق الرئيسية. هذا تحسين يمنع تعارض الموارد للتطبيقات التي تستخدم عمليات متعددة. aosp/1749180، aosp/1761729
الإصدار 2.6.0-beta01
2 يونيو 2021
تم طرح androidx.work:work-*:2.6.0-beta01. يتضمّن الإصدار 2.6.0-beta01 هذه التعديلات.
يتضمّن هذا الإصدار بعض التحسينات الطفيفة على المستندات. يتطابق الإصدار إلى حد كبير مع 2.6.0-alpha02.
الإصدار 2.6.0-alpha02
21 أبريل 2021
تم طرح androidx.work:work-*:2.6.0-alpha02. يتضمّن الإصدار 2.6.0-alpha02 هذه التعديلات.
الميزات الجديدة
تضيف هذه السمة إمكانية استخدام Workers التي يمكن تشغيلها في أي عملية. (Iaf200)
تمت إضافة
RemoteCoroutineWorkerوهو تنفيذRemoteListenableWorkerيمكن ربطه بعملية بعيدة. (I30578)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة إمكانية استخدام قيد الشبكة
TEMPORARILY_UNMETERED. (I08d5e) - إتاحة استخدام عمليات متعدّدة في
setProgressAsync()(Ib6d08) - اجعل
WorkManagerInitializerمتاحًا للجميع لكي تتمكّنandroidx.startup.Initializers الأخرى من استخدامه كعنصر تابع. (I5ab11)
الإصدار 2.6.0-alpha01
24 مارس 2021
تم طرح androidx.work:work-*:2.6.0-alpha01. يتضمّن الإصدار 2.6.0-alpha01 هذه التعديلات.
الميزات الجديدة
يستخدم
WorkManagerالآنandroidx.startupلتهيئة WorkManager. كان يتم ذلك سابقًا من خلالandroidx.work.impl.WorkManagerInitializer. (aosp/1608813)إذا كنت قد استخدمت
tools:node="remove"ContentProviderفي السابق، يجب اتّباع الخطوات التالية بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(أو)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
التغييرات في واجهة برمجة التطبيقات
- أضِف واجهة برمجة تطبيقات
Result.getOutputData()تعرضoutputDataالخاص بفئة ListenableWorker. (Ie51e3)
إصلاح الأخطاء
- تمت إضافة حلّ بديل لخطأ في الشركة المصنّعة للمعدّات الأصلية يؤدي إلى ظهور
SecurityExceptionعند استخدام واجهات برمجة التطبيقاتAlarmManager. (aosp/1587518)
الإصدار 2.5.0
الإصدار 2.5.0
27 يناير 2021
تم طرح androidx.work:work-*:2.5.0. يتضمّن الإصدار 2.5.0 هذه التعديلات.
التغييرات الرئيسية منذ الإصدار 2.4.0
- عنصر
:work:work-multiprocessجديد للتطبيقات التي تستخدم عمليات متعددة يؤدي ذلك إلى تحسين الأداء من خلال توحيد عملية جدولة طلبات العمل في عملية واحدة.- لاستخدام
work-multiprocess، حدِّد الاعتمادية على:implementation "androidx.work:work-multiprocess:2.5.0" - حدِّد عملية أساسية باستخدام Configuration.Builder.setDefaultProcessName(String).
- عند استخدام
work-multiprocess، عليك أيضًا استخدام RemoteWorkManager لإدارةWorkRequest. يتواصل RemoteWorkManager دائمًا مع العملية المحدّدة. تعمل أداة الجدولة أثناء المعالجة أيضًا في العملية المحدّدة.
- لاستخدام
- في بعض الأحيان، لا يمكن إنشاء مثيل
JobServiceمنActivityManagerلبدء مهمة. يؤدي ذلك إلى تجاهل المهمة الأساسية بدون إشعار بسبب خطأ في النظام الأساسي. تضمنWorkManagerالآن توفُّر مهام احتياطية لكلWorkRequestعند تهيئةApplicationمن خلال مهام التوفيق. يؤدي ذلك إلى تحسين موثوقية تنفيذ المهام بشكل كبير. (b/172475041 وaosp/1489577) - يحدّ
WorkManagerمن نمو قاعدة البيانات من خلال تقليل مدة التخزين المؤقت التي يتم تتبُّعWorkRequestفيها بعد اكتمالWorkRequest. كانت المدة7يومًا في السابق. تم تقليلها إلى1يوم بالإضافة إلى مدة keepResultsForAtLeast. (aosp/1419708) - أصبحت
TestListenableWorkerBuilderمتوافقة الآن مع الفئة المادية التي توسّعListenableWorkerلتسهيل الاختبار. (aosp/1443299 وb/169787349) - تتوفّر الآن أداة فحص WorkManager عند استخدام الإصدار Arctic Fox من "استوديو Android".
الإصدار 2.5.0-rc01
13 يناير 2021
تم طرح androidx.work:work-*:2.5.0-rc01. يتضمّن الإصدار 2.5.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم إبطال
getWorkInfosLiveDataبشكل صحيح بعد تعديل الكيانات عند استخدام واجهة برمجة التطبيقات المستندة إلىWorkQuery. (aosp/1540566 وb/173769028) - تم إصلاح الخطأ الذي كان يتسبّب في عدم وضع علامة "ناجحة" على معاملات قاعدة البيانات في بعض الحالات النادرة. يؤدي ذلك إلى حدوث مشاكل في بعض أجهزة Motorola. (aosp/1535368 وb/175944460)
- تم إصلاح خطأ لتجاهل
NoSuchElementExceptionعند محاولة إلغاء الربط من عملية متوقفة. (aosp/1530589) - تحسين
ConstraintTrackingWorkerلإيقافListenableWorkerفقط إذا لم يتم إيقافه من قبل (aosp/1496844 وb/172946965) - تعديل مكتبات androidx.work لاستهداف Java 8 (Ibd2f2)
الإصدار 2.5.0-beta02
2 ديسمبر 2020
تم طرح androidx.work:work-*:2.5.0-beta02. يتضمّن الإصدار 2.5.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في
androidx.work:work-multiprocessحيث حظر WorkManager عن غير قصد سلسلة التعليمات التي يتم استدعاؤها عند محاولة الربط بالعملية المحدّدة. (aosp/1475538) - تم إصلاح الخلل الذي كان يتسبّب في عدم تسوية
PeriodicWorkRequestبشكل صحيح. (b/172475041 وaosp/1489577) - تمت إضافة حلّ بديل لخطأ في النظام الأساسي عند إيقاف الخدمة التي تعمل في المقدّمة عند استخدام واجهات برمجة التطبيقات
setForeground*. (b/170924044 وaosp/1489901)
الإصدار 2.5.0-beta01
28 أكتوبر 2020
تم طرح androidx.work:work-*:2.5.0-beta01. يتضمّن الإصدار 2.5.0-beta01 هذه التعديلات.
الميزات الجديدة
- يحدّ
WorkManagerتلقائيًا من عددWorkRequestالتي يمكن أن يلتقطها المجدول أثناء المعالجة. لا تزال الطلبات تُنفَّذ بترتيب الوارد أولاً يُباع أولاً (FIFO). (aosp/1455228) - تحاول
WorkManagerاسترداد البيانات عندما تكون حالة متجر بيانات التطبيق سيئة. (aosp/1463103)
إصلاح الأخطاء
- عندما يتم إيقاف
ListenableWorkerمؤقتًا، ضَع علامةENQUEUEDعليها على الفور حتى تتم إعادة جدولتها لاحقًا. (aosp/1455618 وb/170273988)
الإصدار 2.5.0-alpha03
14 أكتوبر 2020
تم طرح androidx.work:work-*:2.5.0-alpha03. يتضمّن الإصدار 2.5.0-alpha03 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- لا يستخدم
TestListenableWorkerBuilderوTestWorkerBuilderالأنواع الأولية. (I883ad، b/169787349)
إصلاح الأخطاء
- استخدِم
ApplicationInfoلتحديد اسم عملية التطبيق التلقائية. (b/168716641 وaosp/1429950) - أصلِح قواعد إذن الوصول إلى
RemoteWorkManagerوRemoteWorkContinuation. لم تعُد هذه الواجهات تحمل العلامة@Restricted. (aosp/1432091) - إصلاح قواعد Proguard الخاصة بـ "
:work:work-multiprocess" (aosp/1432091) - تحسين مراحل نشاط الإشعارات للعمليات الطويلة الأمد المرتبطة بخدمة تعمل في المقدّمة (b/168502234 وaosp/1431331)
الإصدار 2.5.0-alpha02
16 أيلول (سبتمبر) 2020
تم طرح androidx.work:work-*:2.5.0-alpha02. يتضمّن الإصدار 2.5.0-alpha02 هذه التعديلات.
الميزات الجديدة
- أضِف واجهة برمجة تطبيقات إلى WorkQuery لتتمكّن من استخدام
ids لطلب البحث عنWorkInfos. (aosp/1412372 وb/157335295) - يتوافق WorkManager بشكل أفضل مع التطبيقات التي تستخدم عمليات متعددة من خلال عنصر جديد (
androidx.work:work-multiprocess:*). يساعد هذا العنصر الجديد في حلّ بعض المشاكل التي تواجهها التطبيقات الكبيرة، بما في ذلك:- يجب عادةً إعداد WorkManager في كل عملية تطبيق. هذا ليس جيدًا لأنّه يؤدي إلى زيادة التنازع على SQLite، ما يتسبب بدوره في حدوث مشاكل أخرى. تتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام
Configuration#setDefaultProcessName(processName).processNameهو اسم عملية مؤهَّل بالكامل ويبدو على النحو التالي:packageName:processName(مثلاًcom.example:remote). - مجموعة من واجهات برمجة التطبيقات الجديدة:
RemoteWorkManagerوRemoteWorkContinuationإلىenqueue، وcancelوqueryلطلبات العمل لا تتضمّن واجهات برمجة التطبيقات هذه متغيراتLiveDataلتجنُّب تعارض SQLite في العمليات المتعدّدة. يتم إعادة توجيه جميع طلباتenqueueوcancelوqueryإلى عملية تطبيقprimaryباستخدام AIDL، ويتم عرضListenableFutureسلس. (aosp/1392657 وaosp/1411210 وaosp/1412215 وaosp/1417713)
- يجب عادةً إعداد WorkManager في كل عملية تطبيق. هذا ليس جيدًا لأنّه يؤدي إلى زيادة التنازع على SQLite، ما يتسبب بدوره في حدوث مشاكل أخرى. تتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام
التغييرات في واجهة برمجة التطبيقات
- تزيل WorkManager الآن عمليات
WorkRequestالمكتملة التي ليس لديها تبعيات غير مكتملة بشكل أكثر فعالية. تم تغيير مدة الفترة الفاصلة من7يوم إلى1يوم واحد. (aosp/1419708)
إصلاح الأخطاء
- يعمل WorkManager الآن على تسوية المهام بشكل استباقي حتى تتم مزامنة مهام
WorkRequestوJobSchedulerعند تهيئةWorkManager. (aosp/1412794 وb/166292069)
الإصدار 2.5.0-alpha01
19 آب (أغسطس) 2020
تم طرح androidx.work:work-*:2.5.0-alpha01. يتضمّن الإصدار 2.5.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تغييرات على واجهات برمجة التطبيقات الداخلية التي تتيح لنا تقديم أدوات أفضل باستخدام
WorkManagerمن الآن فصاعدًا يُرجى متابعتنا لمعرفة المزيد من الأخبار.
إصلاح الأخطاء
- التعامل مع
SecurityExceptionعند تتبُّع حالة الشبكة على بعض الأجهزة (aosp/1396969)
المساهمة الخارجية
- إصلاح مستندات
ArrayCreatingInputMergerمن قِبل Zac Sweers (github/43)
الإصدار 2.4.0
الإصدار 2.4.0
22 تموز (يوليو) 2020
تم طرح androidx.work:work-*:2.4.0. يتضمّن الإصدار 2.4.0 هذه التعديلات.
التغييرات الرئيسية منذ الإصدار 2.3.0
- أصبحت أداة جدولة العمليات في
WorkManagerأكثر فعالية. في السابق، كانSchedulerقيد التنفيذ يراعي فقط تنفيذ العمل الذي لم يتأخر والذي تم استيفاء قيوده. الآن، يتتبّع برنامج الجدولة قيد التنفيذWorkRequestالتي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequests. لا يلتزمSchedulerالذي قيد التنفيذ أيضًا بحدود الجدولة (ولكنّه يظلّ مقيّدًا بحجمExecutorالذي يستخدمه WorkManager). وهذا يعني أنّه يمكن للتطبيق الآن تنفيذ عدد أكبر بكثير من WorkRequest عندما يكون التطبيق في المقدّمة. لإدارة تنفيذ العمل المؤجّل في المقدّمة، تقدّمWorkManagerأيضًاRunnableSchedulerجديدًا يمكن ضبطه. (aosp/1185778) - يتوافق WorkManager الآن مع RxJava 3. لاستخدام RxJava 3، يجب تضمين التبعية التالية:
implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904) - تمت إضافة إمكانية البحث عن
WorkInfoباستخدامWorkQuery. يكون ذلك مفيدًا عندما يريد المطوّرون البحث عنWorkInfoمن خلال مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder.fromStates(...)أوWorkQuery.Builder. fromTags(...)أوWorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230 وb/143847546) أضِف إمكانية طلب معلومات التشخيص من
WorkManagerباستخدام:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:
- طلبات WorkRequest التي تم إكمالها في آخر 24 ساعة
- WorkRequests التي يتم تنفيذها حاليًا.
- Scheduled WorkRequests. (aosp/1235501)
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACEالمشابهة لـAPPEND، ولكنها تستبدل سلسلة تم إلغاؤها أو لم تستوفِ المتطلبات الأساسية. (b/134613984 وaosp/1199640)توفير إمكانية إضافة
RunnableSchedulerمخصّص لتتبُّع WorkRequest التي يجب تنفيذها في المستقبل يتم استخدام هذا الخيار من قِبل "المجدول" أثناء المعالجة. (aosp/1203944)إضافة إمكانية إضافة مصانع بشكل ديناميكي للتفويض إليها عند استخدام
DelegatingWorkerFactory(b/156289105, aosp/1309745)تتوافق عملية التتبُّع مع قيود
BATTERY_NOT_LOWبشكل أكبر مع المنصة. (aosp/1312583)يستخدم المجدول داخل العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويفيد ذلك في توفير دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceTypeالصحيح عند استخدام واجهات برمجة التطبيقاتsetForegroundAsync()(b/147873061 وaosp/1215915) - تحديد أرقام تعريف JobScheduler التي يجب أن يستخدمها WorkManager عند استخدام واجهات برمجة تطبيقات JobService مباشرةً aosp/1223567
- تمت إضافة قاعدة تدقيق جديدة تضمن أنّ
ListenableWorkerعمليات التنفيذ أصبحت الآنpublicعند استخدامWorkerFactoryالتلقائي. (aosp/1291262)
- استخدام
سيتم الآن الإشارة إلى طلبات
setForegroundAsync()التي لا تكتمل قبل اكتمالListenableWorkerمن خلالIllegalStateExceptionفيListenableFutureالذي تم عرضه. (aosp/1262743)تم إصلاح الخطأ الذي لا يتم فيه إيقاف
ForegroundServiceبعد مقاطعةWorkerفي المقدّمة. (b/155579898 وaosp/1302153)إصلاح الخطأ الذي يتسبّب في محاولة
WorkManagerتنفيذ عدة مثيلات منWorkerالمرتبط بخدمة تعمل في المقدّمة (b/156310133, aosp/1309853)
الإصدار 2.4.0-rc01
24 يونيو 2020
تم طرح androidx.work:work-*:2.4.0-rc01. يتضمّن الإصدار 2.4.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- يستخدم المجدول داخل العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويفيد ذلك في توفير دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
الإصدار 2.4.0-beta01
20 أيار (مايو) 2020
تم إصدار androidx.work:work-gcm:2.4.0-beta01 وandroidx.work:work-runtime:2.4.0-beta01 وandroidx.work:work-runtime-ktx:2.4.0-beta01 وandroidx.work:work-rxjava2:2.4.0-beta01 وandroidx.work:work-testing:2.4.0-beta01. يتضمّن الإصدار 2.4.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي لا يتم فيه إيقاف
ForegroundServiceبعد مقاطعةWorkerفي المقدّمة. (b/155579898 وaosp/1302153) - إصلاح الخطأ الذي يحاول فيه
WorkManagerتنفيذ عدة مثيلات منWorkerالمرتبط بخدمة تعمل في المقدّمة (b/156310133، aosp/1309853) - إضافة إمكانية إضافة مصانع بشكل ديناميكي للتفويض إليها عند استخدام
DelegatingWorkerFactory(b/156289105 وaosp/1309745) - مواءمة تتبُّع قيود
BATTERY_NOT_LOWبشكل أقرب مع المنصة (aosp/1312583)
الإصدار 2.4.0-alpha03
29 نيسان (أبريل) 2020
تم طرح androidx.work:work-*:2.4.0-alpha03. يتضمّن الإصدار 2.4.0-alpha03 هذه التعديلات.
الميزات الجديدة
- يتوافق WorkManager الآن مع RxJava 3. لاستخدام RxJava 3، يجب تضمين التبعية التالية:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904) - تمت إضافة قاعدة تدقيق جديدة تضمن أنّ
ListenableWorkerعمليات التنفيذ أصبحت الآنpublicعند استخدامWorkerFactoryالتلقائي. (aosp/1291262)
التغييرات في واجهة برمجة التطبيقات
- سيؤدي الآن استدعاء
setProgressAsync()بعد انتهاء تنفيذListenableWorkerإلى إرسال إشارةExceptionمن خلالListenableFuture. (aosp/1285494) - تم الآن وضع علامة
finalعلىWorkQuery.Builder. (aosp/1275037) - تمت إعادة تسمية طرق الإنشاء
WorkQuery.BuilderwithStatesوwithTagsوwithUniqueWorkNamesلتصبحfromStatesوfromTagsوfromUniqueWorkNamesعلى التوالي. (aosp/1280287)
إصلاح الأخطاء
- تجاهُل
SecurityExceptionعند تتبُّع حالة شبكة الجهاز (b/153246136 وaosp/1280813)
الإصدار 2.4.0-alpha02
1 نيسان (أبريل) 2020
تم طرح androidx.work:work-*:2.4.0-alpha02. يتضمّن الإصدار 2.4.0-alpha02 هذه التعديلات.
الميزات الجديدة
- تمت إضافة قاعدة Lint جديدة تحذّر عندما تتطلّب
WorkRequestكلاً منConstraints.setRequiresCharging(...)وConstraints.setRequiresDeviceIdle(...). لا يتم شحن بعض الأجهزة وهي في وضع الخمول في الوقت نفسه. لذا، سيتم تنفيذ هذه الطلبات بوتيرة أقل من المتوقّع. (aosp/1253840)
التغييرات في واجهة برمجة التطبيقات
تمت إضافة إمكانية البحث عن
WorkInfoباستخدامWorkQuery. يكون ذلك مفيدًا عندما يريد المطوّرون البحث عنWorkInfoمن خلال مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder withStates(...)أوWorkQuery.Builder withTags(...)أوWorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230 وb/143847546)سيتم الآن الإبلاغ عن طلبات
setForegroundAsync()التي لم تكتمل قبل اكتمال طلبListenableWorkerمن خلالIllegalStateExceptionفيListenableFutureالتي تم إرجاعها. (aosp/1262743)
إصلاح الأخطاء
- تم إصلاح قاعدة التدقيق التي تتحقّق من مُدد الفواصل الزمنية غير الصالحة لـ
PeriodicWorkRequest. (aosp/1254846 وb/152606442)
الإصدار 2.4.0-alpha01
4 مارس 2020
تم طرح androidx.work:work-*:2.4.0-alpha01. يتضمّن الإصدار 2.4.0-alpha01 هذه التعديلات.
الميزات الجديدة
أصبحت أداة جدولة العمليات في
WorkManagerأكثر فعالية. في السابق، كان "المجدول" أثناء التنفيذ لا يأخذ في الاعتبار إلا تنفيذ العمل الذي لم يتم تأخيره والذي تم استيفاء قيوده. الآن، يتتبّع برنامج الجدولة قيد التنفيذWorkRequestالتي قد يتم تنفيذها في المستقبل، بما في ذلكPeriodicWorkRequest. لا يلتزم برنامج الجدولة أثناء التنفيذ أيضًا بقيود الجدولة (ولكنّه يظلّ مقيّدًا بحجمExecutorالذي يستخدمه WorkManager). وهذا يعني أنّه يمكن للتطبيق الآن تنفيذ عدد أكبر بكثير منWorkRequestعند تشغيله في المقدّمة. (aosp/1185778)تمت إضافة إمكانية طلب معلومات تشخيصية من WorkManager باستخدام
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:- طلبات WorkRequest التي تم إكمالها في آخر 24 ساعة
- WorkRequests التي يتم تنفيذها حاليًا.
- Scheduled WorkRequests. (aosp/1235501)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceTypeالصحيح عند استخدام واجهات برمجة التطبيقاتsetForegroundAsync()(b/147873061 وaosp/1215915) - تحديد معرّفات
JobSchedulerالتي يجب أن تستخدمهاWorkManagerعند استخدام واجهات برمجة التطبيقاتJobServiceمباشرةً (aosp/1223567)
- استخدام
التغييرات في واجهة برمجة التطبيقات
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACEالذي يشبهAPPEND، ولكنّه يستبدل سلسلة تم إلغاؤها أو لم تستوفِ المتطلبات الأساسية. (b/134613984 وaosp/1199640)توفير إمكانية إضافة
RunnableSchedulerمخصّص لتتبُّعWorkRequestالتي يجب تنفيذها في المستقبل يتم استخدام هذا المعرّف من قِبل "المجدول" أثناء المعالجة. (aosp/1203944)
إصلاح الأخطاء
- تم إيقاف
setProgress()نهائيًا فيRxWorkerلأنّه كان يعرض سابقًاSingle<Void>وهو نوع غير ممكن. تمت إضافة واجهة برمجة تطبيقات جديدةsetCompletableProgress()تعرضCompletableبدلاً من ذلك، كما تمت إضافة قواعد Lint جديدة تساعد في نقل البيانات إلى واجهات برمجة التطبيقات الجديدة. (b/150080946, aosp/1242665)
الإصدار 2.3.4
الإصدار 2.3.4
18 مارس 2020
تم طرح androidx.work:work-*:2.3.4. يتضمّن الإصدار 2.3.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ كان يتسبّب في تشغيل عدة مثيلات من عملية
Workerطويلة الأمد، بعد تجاوز فترة التنفيذ البالغة 10 دقائق. (aosp/1247484 وb/150553353) - إصلاح خطأ في أداة lint الخاصة بمكتبة WorkManager
IssueRegistryنشكر @ZacSweers من Slack على مساهمته. (aosp/1217923)
الإصدار 2.3.3
الإصدار 2.3.3
4 مارس 2020
تم طرح androidx.work:work-*:2.3.3. يتضمّن الإصدار 2.3.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خلل كان يؤدي إلى عدم إعادة جدولة
Workerبشكل صحيح في حال حدوث انقطاع. (b/150325687 وaosp/1246571)
الإصدار 2.3.2
الإصدار 2.3.2
19 فبراير 2020
تم طرح androidx.work:work-*:2.3.2. يتضمّن الإصدار 2.3.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تتجاوز فيها WorkManager الحد الأقصى لعدد المهام البالغ 100 مهمة في JobScheduler في حالات نادرة. (aosp/1226859 وb/149092520)
- تم إصلاح مشكلة التزامن في ConstraintControllers. (aosp/1220100)
- تم تحسين إدارة مراحل نشاط "الخدمة التي تعمل في المقدّمة" لبرامج Worker التي تعمل لفترة طويلة. (aosp/1226295)
- تم تحسين إدارة إلغاء الإشعارات الخاصة بـ المنفِّذين الذين يعملون لفترة طويلة عند إلغاء المنفِّذ. (aosp/1228346)
الإصدار 2.3.1
الإصدار 2.3.1
5 فبراير 2020
تم طرح androidx.work:work-*:2.3.1. يتضمّن الإصدار 2.3.1 هذه التعديلات.
إصلاح الأخطاء
- إدارة دورة حياة
Notificationبشكل أفضل بالنسبة إلىWorkerالتي تعمل لفترة طويلة عندما تكونServiceفي المقدّمة نشطة (aosp/1218539 وb/147249312) - يعتمد
WorkManagerالآن على الإصدار الثابت منandroidx.sqlite:sqlite-framework:2.1.0. (aosp/1217729) - تمت إضافة قواعد تدقيق لغوي لضمان تحديد
foregroundServiceTypeفيAndroidManifest.xmlعند استخدامforegroundServiceTypeفيForegroundInfo. (aosp/1214207 وb/147873061)
الإصدار 2.3.0
الإصدار 2.3.0
22 يناير 2020
تم إصدار androidx.work:work-*:2.3.0 بدون أي تغييرات منذ 2.3.0-rc01. يتضمّن الإصدار 2.3.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.2.0
- إمكانية الاستفادة من
ListenableWorker#setForegroundAsync()في المهام المهمة أو التي تستغرق وقتًا طويلاً - إتاحة إمكانية تتبُّع تقدّم العاملين من خلال
ListenableWorker#setProgressAsync() - تتضمّن WorkManager الآن قواعد lint إضافية كجزء من المكتبة، ما يساعد في رصد الأخطاء مبكرًا.
الإصدار 2.3.0-rc01
8 كانون الثاني (يناير) 2020
تم طرح androidx.work:work-*:2.3.0-rc01. يتضمّن الإصدار 2.3.0-rc01 هذه التعديلات.
هذا الإصدار مطابق للإصدار 2.3.0-beta02
إصلاح الأخطاء
- يحدّد العنصر
work-testingالآن تبعيةapiعلىwork-runtime-ktx. (aosp/1194410)
الإصدار 2.3.0-beta02
18 كانون الأول (ديسمبر) 2019
تم طرح androidx.work:work-*:2.3.0-beta02. يتضمّن الإصدار 2.3.0-beta02 هذه التعديلات.
الميزات الجديدة
- تمت إضافة رسالة خطأ أفضل لحالات SQLite غير القابلة للاسترداد. (aosp/1185777)
- تمت إضافة قاعدة lint تضمن إزالة موفّر المحتوى
androidx.work.impl.WorkManagerInitializerمنAndroidManifest.xmlعند استخدام عملية التهيئة عند الطلب. (aosp/1167007) - تمت إضافة تحذير lint عند استخدام
enqueue()لـPeriodicWorkRequestبدلاً منenqueueUniquePeriodicWork(). (aosp/1166032)
تغييرات واجهة برمجة التطبيقات
- يتطلّب
ForegroundInfoالآن تحديدnotificationIdالمطلوب استخدامه عند استخدامListenableWorker.setForegroundAsync(). هذا تغيير غير متوافق مع الإصدارات السابقة. يتيح لك ذلك تنفيذ العديد من عملياتWorkerالطويلة في الوقت نفسه. تساعدWorkManagerأيضًا في إدارة مدة صلاحيةNotificationالمقدَّمة بشكل أفضل. (b/145473554 وaosp/1181208 وasop/1181216 وasop/1183577)
إصلاح الأخطاء
- تم إصلاح خطأ في تنفيذ AlarmManager حيث لم يتم تنظيف المنبّهات بشكلٍ صحيح. (aosp/1156444)
- تم إصلاح الخطأ الذي كان يؤدي إلى إنشاء سلسلة
WorkContinuationغير صحيحة عند توفّر قائمة فارغة منWorkRequest. (b/142835274 وaosp/1157051)
التغييرات في الاعتماديات
- تستخدم WorkManager الآن الإصدار 2.2.2 من Room.
الإصدار 2.3.0-beta01
20 نوفمبر 2019
تم طرح androidx.work:work-*:2.3.0-beta01. يتضمّن الإصدار 2.3.0-beta01 هذه التعديلات.
الميزات الجديدة
- تمت إضافة قاعدة تدقيق جديدة تمنع حدوث أخطاء من المطوّرين بسبب التنفيذ غير الصحيح لـ
androidx.work.Configuration.Providerعند استخدام عملية الإعداد عند الطلب. aosp/1164559
الإصدار 2.3.0-alpha03
23 تشرين الأول (أكتوبر) 2019
تم طرح androidx.work:work-*:2.3.0-alpha03. يتضمّن الإصدار 2.3.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهة برمجة التطبيقات
WorkManager.createCancelPendingIntent()التي تسهّل إلغاءWorkRequestبدون الحاجة إلى تسجيل مكوّن آخر فيAndroidManifest.xml. تسهّل واجهة برمجة التطبيقات هذه إلغاءWorkRequestمنNotificationبشكل خاص. نتوقّع أن يتم دمج ذلك مع واجهات برمجة التطبيقات الجديدة التي تعمل في المقدّمة في الإصدار 2.3.0. - يعتمد WorkManager الآن على الإصدار الثابت من
androidx.room:*:2.2.0.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
ForegroundInfo.getNotificationType()إلىForegroundInfo.getForegroundServiceType()ليكون الاسم أكثر اتساقًا مع واجهات برمجة التطبيقات الأساسية للمنصة. (b/142729893 وaosp/1143316)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يحدث بسبب طلب غير ضروري إلى
setTransactionSuccessful()خارج نطاق المعاملة. يحدث ذلك في عمليات نقل البيانات النادرة. (b/142580433 وaosp/1141737)
الإصدار 2.3.0-alpha02
9 أكتوبر 2019
تم طرح androidx.work:work-*:2.3.0-alpha02. يتضمّن الإصدار 2.3.0-alpha02 هذه التعديلات.
الميزات الجديدة
- يتيح WorkManager الآن تنفيذ مهام طويلة الأمد أو مهمة يجب أن يبقيها نظام التشغيل نشطة. لمزيد من المعلومات، اطّلِع على
ListenableWorker#setForegroundAsync()(أوCoroutineWorker#setForeground()للغة Kotlin). (aosp/1133636)
تغييرات واجهة برمجة التطبيقات
- تم تغيير اسم واجهة برمجة التطبيقات
containsKeyفيDataإلىhasKeyWithValueOfType. تم أيضًا إعادة تسمية طريقة الإضافة المقابلة في مكتبةktx. (b/141916545)
إصلاح الأخطاء
- يجدول WorkManager العمل بشكل عادل عندما يقترب عدد
WorkRequests التي تمّت إضافتها إلى قائمة الانتظار من حدود الجدولة. (aosp/1105766) - لا يستدعي WorkManager
ListenableWorker#onStopped()إلا إذا لم يكتمل العمل بعد. (b/140055777) - يزيل WorkManager الآن معلومات التقدّم عند مقاطعة المنفِّذ أو وصوله إلى الحالة النهائية. (aosp/1114572)
- أصبح
Dataيتضمّن الآنtoString()أكثر فائدة. (b/140945323) - يتضمّن
Dataالآن طريقةequals()محسّنة. تتيح أيضًا استخدامdeepEqualsلأنواعArray. (b/140922528) - يخزّن WorkManager الآن قاعدة البيانات الداخلية وملفات الإعدادات المفضّلة في دليل لا يتضمّن نُسخًا احتياطية. (b/114808216)
الإصدار 2.3.0-alpha01
22 أغسطس 2019
تم طرح androidx.work:work-*:2.3.September 5, 20190-alpha01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- يمكن الآن
ListenableWorkers ضبط مستوى التقدّم من خلال واجهة برمجة التطبيقاتsetProgressAsync(). تمت أيضًا إضافة واجهة برمجة تطبيقاتsuspend-ingsetProgressAPI مقابلة فيCoroutineWorkerوsetProgressفيRxWorkerتعرضSingle<Void>. باستخدام واجهات برمجة التطبيقات الجديدة هذه، يمكن للعاملين نقل معلومات التقدم عبرWorkInfoالتي تتضمّن واجهة برمجة تطبيقاتgetProgressمقابلة. (b/79481554) - يحتوي
Dataعلى واجهة برمجة تطبيقاتcontainsKey()يمكن استخدامها للتحقّق من أنّ بيانات الإدخال إلىWorkerتحتوي على مفاتيح من النوع المتوقّع. (b/117136838) - يمكن الآن تسلسل
DataباستخدامData.toByteArray()وData.fromByteArray(). يُرجى العِلم أنّه لا توجد ضمانات بشأن تحديد الإصدارات باستخدامData، لذا يجب عدم الاحتفاظ به أو استخدامه في عملية الاتصال بين العمليات (IPC) بين التطبيقات. ولا يمكن استخدامها بأمان إلا بين عمليات متعددة من التطبيق نفسه. - تمت إضافة إمكانية تحديد
InputMergerFactoryمن خلالConfiguration.setInputMergerFactory. (b/133273159)
تغييرات واجهة برمجة التطبيقات
- ستطرح WorkManager مثيلاً من
IllegalStateExceptionإذا عرضتWorkerFactoryمثيلاً منListenableWorkerتم استدعاؤه سابقًا. (b/139554406) - تعديلات على المستندات حول إلغاء
ListenableFutureوonStopped()فيListenableWorker(b/138413671)
إصلاح الأخطاء
- يتجاهل Scheduler أثناء المعالجة الآن
WorkRequests مع القيدidle. لن يتم الآن تلقّي هذه الطلبات إلا من خلالJobSchedulerعندما يكون الجهازidle. (aosp/1089779) - يستخدم
TestSchedulerالآنExecutorالمحدّد بشكلٍ صحيح لتنفيذ المهام الداخلية في الاختبارات. (aosp/1090749)
الإصدار 2.2.0
الإصدار 2.2.0
15 أغسطس 2019
تم طرح androidx.work:work-*:2.2.0. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.2.0-rc01.
التغييرات المهمة في الإصدار 2.2.0 مقارنةً بالإصدار 2.1.0
androidx.work:work-gcm:2.2.0 هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كأداة جدولة عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات <= 22. هذه تبعية اختيارية تساعد في إجراء معالجة أكثر موثوقية وفعالية في الخلفية على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذه التبعية إلى ملف Gradle للحصول تلقائيًا على إمكانية استخدام GCMNetworkManager. إذا لم تكن "خدمات Play" متاحة، سيستمر WorkManager في استخدام AlarmManager على الأجهزة القديمة.
الإصدار 2.2.0-rc01
30 يوليو 2019
تم طرح androidx.work:work-*:2.2.0-rc01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خطأ في تنفيذ AlarmManager يؤدي إلى إيقاف الخدمة قبل الأوان، ما يؤدي إلى ظهور الخطأ
RejectedExecutionExceptionفي حالات نادرة. (aosp/1092374) (b/138238197). - تمت إضافة حلّ بديل لمشكلة
NullPointerExceptionعند استخدام واجهات برمجة التطبيقاتJobSchedulerعلى بعض الأجهزة. (aosp/1091020) (b/138364061)، (b/138441699)
الإصدار 2.2.0-beta02
19 تموز (يوليو) 2019
تم طرح androidx.work:work-*:2.2.0-beta02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تمت إزالة التبعية غير المقصودة لـ Jacoco التي تم تقديمها في
2.2.0-beta01.
الإصدار 2.2.0-beta01
17 يوليو 2019
تم طرح androidx.work:work-*:2.2.0-beta01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
-
androidx.work:work-gcm:2.2.0-beta01هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كأداة جدولة عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات <= 22. هذه تبعية اختيارية تساعد في إجراء معالجة أكثر موثوقية وأداءً في الخلفية على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذه التبعية إلى ملف Gradle للحصول تلقائيًا على إمكانية استخدام GCMNetworkManager. إذا لم تكن "خدمات Play" متاحة، سيستمر WorkManager في استخدام AlarmManager على الأجهزة القديمة.
إصلاح الأخطاء
- إصلاح المشكلة في
IllegalArgumentExceptionعند تتبُّع حالة الشبكة على أجهزة Nvidia Shield K1 اللوحية (aosp/1010188)
الإصدار 2.1.0
الإصدار 2.1.0
11 يوليو 2019
تم طرح androidx.work:work-*:2.1.0. هذا الإصدار مطابق للإصدار androidx.work:work-*:2.1.0-rc01.
التغييرات المهمة منذ الإصدار 2.0.1
- يتطلّب
work-runtime-ktxالآن Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلىbuild.gradle:kotlinOptions { jvmTarget = "1.8" } - تمت إضافة عملية تهيئة عند الطلب لـ WorkManager، ما يؤدي إلى إنشاء WorkManager
فقط عند الإشارة إليه. b/127497100 لإعداد مشروعك من أجل التفعيل عند الطلب، اتّبِع الخطوات التالية:
- أوقِف أداة التهيئة التلقائية.
- نفِّذ
Configuration.Providerعلى عنصرApplicationالمخصّص. - غيِّر كل مراجع
WorkManager.getInstance()إلىWorkManager.getInstance(Context). في إطار هذا التغيير، أوقفنا نهائيًاWorkManager.getInstance(). من الأفضل دائمًا استبدال الرمز القديم بالرمز الجديدWorkManager.getInstance(Context)، حتى إذا لم تكن بصدد إجراء عملية تهيئة عند الطلب.
- تتيح
PeriodicWorkRequestالآن إمكانية ضبط تأخيرات أولية. يمكنك استخدام طريقةsetInitialDelayفيPeriodicWorkRequest.Builderلضبط تأخير أولي. b/111404867 - تمت إضافة إمكانية التفويض إلى واحد أو أكثر من
WorkerFactoryالمسجّلين باستخدامDelegatingWorkerFactory. b/131435993 - تمت إضافة إمكانية تخصيص
Executorالذي يستخدمه WorkManager في جميع عمليات حفظ البيانات الداخلية من خلالConfiguration.Builder.setTaskExecutor. - تمت إضافة إمكانية إنشاء فئتَي
WorkerوListenableWorkerيمكن إجراء اختبار وحدات لهما باستخدامTestWorkerBuilderوTestListenableWorkerBuilderفي العنصرwork-testing.- يُرجى العِلم أنّ
work-testingيجلب الآن Kotlin كعنصر تابع ويتضمّن العديد من إضافات Kotlin تلقائيًا.
- يُرجى العِلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo. b/127290461 - يمكن الآن لأنواع
Dataتخزين واسترداد وحدات البايت ومصفوفات البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData. - تعتمد WorkManager الآن على
Room 2.1.0، ما من شأنه حلّ بعض مشاكل قاعدة البيانات.
الإصدار 2.1.0-rc01
27 يونيو 2019
تم طرح androidx.work:work-*:2.1.0-rc01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى تعطُّل أحد التطبيقات عند تنفيذ مهام باستخدام
JobSchedulerأثناء إجراء عملية احتياطية b/135858602.
الإصدار 2.1.0-beta02
20 يونيو 2019
تم طرح androidx.work:work-*:2.1.0-beta02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تستخدم
TestListenableWorkerBuilderالآنWorkerFactoryالصحيح عند إنشاء مثيلات منListenableWorker. b/135275844 - تم إصلاح الخطأ الذي تسبَّب في حدوث انحرافات في نوافذ التنفيذ الخاصة بـ
WorkRequestبسبب إيقاف العملية نهائيًا. b/135272196
الإصدار 2.1.0-beta01
13 حزيران (يونيو) 2019
تم طرح androidx.work:work-*:2.1.0-beta01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تعتمد WorkManager الآن على
Room 2.1.0، ما من شأنه حلّ بعض مشاكل قاعدة البيانات. - تمت إزالة بعض عمليات الإدخال والإخراج الخاصة بقرص بدء التشغيل من سلسلة التعليمات الرئيسية.
- تم إصلاح مشكلة محتملة في تتبُّع القيود. b/134361006
- تم إلغاء المهام غير الصالحة بشكل استباقي والتي تم إسنادها إلى WorkManager. b/134058261
- تمت إضافة بعض الاستدعاءات الدفاعية إلى واجهات برمجة التطبيقات JobScheduler للأجهزة التي لا تعمل بشكل صحيح.
الإصدار 2.1.0-alpha03
5 يونيو 2019
تم طرح androidx.work:*:2.1.0-alpha03.
إصلاح الأخطاء
- تحسين المستندات الخاصة بـ "
PeriodicWorkRequest" - يستخدم
WorkManagerTestInitHelperالآن منفّذ الخلفية الصحيح للاختبارات. - إصلاحات لمشاكل SQLite عند التعامل مع المعاملات الكبيرة على بعض الأجهزة (b/130182503)
- أصبحت تبعيات WorkManager أكثر دقة. (b/133169148).
- حلّ المشاكل الخاصة بمصنّع المعدات الأصلية في تنفيذ
JobSchedulerعند جدولة المهام باستخدام WorkManager - تحسينات في أداة الجدولة المستندة إلى AlarmManager بشأن مدة بقاء الخدمة التي كانت تتسبّب سابقًا في حدوث أعطال نادرة (b/133313734)
الإصدار 2.1.0-alpha02
16 أيار (مايو) 2019
تم طرح الإصدار 2.1.0-alpha02 من WorkManager. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة.
التغييرات في واجهة برمجة التطبيقات
تتيح
PeriodicWorkRequestالآن إمكانية ضبط تأخيرات أولية. يمكنك استخدام طريقةsetInitialDelayعلىPeriodicWorkRequest.Builderلضبط تأخير أولي. b/111404867تمت إضافة إمكانية التفويض إلى واحد أو أكثر من
WorkerFactoryالمسجّلين باستخدامDelegatingWorkerFactory. b/131435993تمت إضافة إمكانية تخصيص
Executorالذي يستخدمه WorkManager في جميع عمليات حفظ البيانات الداخلية من خلالConfiguration.Builder.setTaskExecutor.تحسين المستندات حول
WorkRequest.keepResultsForAtLeast(b/130638001) والتهيئة عند الطلب وPeriodicWorkRequest.Builder(b/131711394)
الإصدار 2.1.0-alpha01
24 أبريل 2019
تم إصدار WorkManager 2.1.0-alpha01. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة. يُرجى العِلم أنّه بدءًا من هذا الإصدار، ستتوفّر ميزات جديدة لن يتم نقلها إلى الإصدار 1.x. ننصحك بالتبديل إلى الإصدار 2.x.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة عملية تهيئة عند الطلب لـ WorkManager، ما يؤدي إلى إنشاء WorkManager
عند الرجوع إليه فقط. b/127497100 لإعداد مشروعك من أجل التفعيل عند الطلب، اتّبِع الخطوات التالية:
- أوقِف أداة التهيئة التلقائية.
- نفِّذ
Configuration.Providerعلى عنصرApplicationالمخصّص. - غيِّر كل مراجع
WorkManager.getInstance()إلىWorkManager.getInstance(Context). في إطار هذا التغيير، أوقفنا نهائيًاWorkManager.getInstance(). من الأفضل دائمًا استبدال الرمز القديم بالرمز الجديدWorkManager.getInstance(Context)، حتى إذا لم تكن بصدد إجراء عملية تهيئة عند الطلب.
- تمت إضافة إمكانية إنشاء فئتَي
WorkerوListenableWorkerيمكن إجراء اختبار وحدات لهما باستخدامTestWorkerBuilderوTestListenableWorkerBuilderفي العنصرwork-testing.- يُرجى العِلم أنّ
work-testingيجلب الآن Kotlin كعنصر تابع، ولكنّه يتضمّن أيضًا العديد من إضافات Kotlin تلقائيًا.
- يُرجى العِلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo. b/127290461 - يمكن الآن لأنواع
Dataتخزين وحدات البايت ومصفوفات البايت واسترجاعها. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData. - تم إيقاف
CoroutineWorker.coroutineContextنهائيًا. تمت كتابة هذا الحقل بشكل غير صحيح على أنّهCoroutineDispatcher، ولن تحتاج إليه بعد الآن لأنّه يمكنك الانتقال إلى coroutineContext المطلوب بنفسك في نص الدالة المعلقة. - تمت الآن إضافة تعليقات توضيحية إلى
RxWorker.createWork()وRxWorker.getBackgroundScheduler()تتضمّن أنواع الإرجاع@NonNull.
الإصدار 2.0.1
الإصدار 2.0.1
9 أبريل 2019
تم إصدار WorkManager 2.0.1. هذا الإصدار مطابق للإصدار 2.0.1-rc01.
الإصدار 2.0.1-rc01
3 أبريل 2019
تم طرح الإصدار 2.0.1-rc01 من WorkManager. يتضمّن هذا الإصدار بعض إصلاحات الأخطاء. بالنسبة إلى مستخدمي الإصدار 1.x القديم، تظهر بعض هذه التغييرات أيضًا في الإصدار 1.0.1-rc01.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
- تم إصلاح عطل في حالة استخدام متطرفة حيث لم يتم تنظيف عملية تتبُّع القيود في واجهات برمجة التطبيقات التي تسبق JobScheduler. b/129226383
- تم إصلاح
StackOverflowErrorيتعامل مع سلاسل طويلة من العمل. b/129091233 - تم تعديل المستندات الخاصة بـ
PeriodicWorkRequestللإشارة إلى أنّ وقت العمل المرن غير متاح على الإصدار 23 من واجهة برمجة التطبيقات. - تم إصلاح بعض الروابط المعطّلة في مستندات Kotlin.
الإصدار 2.0.0
الإصدار 2.0.0
20 مارس 2019
تم طرح الإصدار 2.0.0 من WorkManager. هذا الإصدار مطابق للإصدار 2.0.0-rc01 وهو الإصدار الثابت 1.0.0 من AndroidX مع تبعيات AndroidX. ننصحك باستهداف هذا الإصدار بدلاً من الإصدارات القديمة 1.x. سيستهدف جميع التطويرات النشطة الإصدار 2.x، ولن يتلقّى الإصدار 1.x سوى إصلاحات الأخطاء الحرجة لفترة محدودة.
الإصدار 2.0.0-rc01
7 مارس 2019
تم طرح الإصدار 2.0.0-rc01 من WorkManager. هذا الإصدار مطابق للإصدار الثابت 1.0.0 ولكنه يتضمّن تبعيات AndroidX. بعد أن يصل هذا الإصدار إلى الإصدار الثابت 2.0.0، عليك تضمين هذا الإصدار، ولن تتلقّى الإصدارات القديمة 1.x سوى بعض الإصلاحات المهمة للأخطاء. سيستهدف كل التطوير النشط الإصدار 2.x.
المهام التابعة قبل AndroidX
مستندات مرجعية: Java
أنيق
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
الإصدار 1.0.1
الإصدار 1.0.1
9 أبريل 2019
تم إصدار WorkManager 1.0.1. هذا الإصدار مطابق للإصدار 1.0.1-rc01.
يُرجى العِلم أنّنا ننصح المستخدمين بشدة بالتحديث إلى الإصدار 2.x من WorkManager، لأنّه سيتم طرح عدد قليل جدًا من التحديثات للإصدار 1.x في المستقبل. ولن يتم طرح واجهات برمجة تطبيقات جديدة للمكتبة 1.x.
الإصدار 1.0.1-rc01
2 أبريل 2019
تم طرح الإصدار 1.0.1-rc01 من WorkManager. يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
- تم إصلاح عطل في حالة استخدام متطرفة حيث لم يتم تنظيف عملية تتبُّع القيود في واجهات برمجة التطبيقات التي تسبق JobScheduler. b/129226383
- تم إصلاح
StackOverflowErrorيتعامل مع سلاسل طويلة من العمل. b/129091233
الإصدار 1.0.0
الإصدار 1.0.0
05 مارس 2019
هذا هو الإصدار الثابت 1.0.0 من WorkManager. هذا الإصدار من WorkManager مطابق للإصدار 1.0.0-rc02.
الإصدار 1.0.0-rc02
21 فبراير 2019
هذا هو الإصدار المحتمَل الثاني للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحَين للأخطاء.
إصلاح الأخطاء
تمت الآن جدولة
Workerبشكل صحيح بعد تعطُّل التطبيق. b/124546316تم الآن تمييز
Workerالتي تطرحExceptionغير معالَج بشكل صحيح على أنّهاFAILED، ولن تؤدي بعد ذلك إلى تعطُّل عملية التطبيق.
الإصدار 1.0.0-rc01
14 شباط (فبراير) 2019
هذا إصدار محتمَل للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحًا لأحد الأخطاء.
إصلاح الأخطاء
- تتّبع عملية التنفيذ المستندة إلى AlarmManager الآن بشكل صحيح
flexالنوافذ لطلبات PeriodicWorkRequest. b/124274584
الإصدار 1.0.0-beta05
6 شباط (فبراير) 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة تم فيها استخدام
JobScheduler.getPendingJob(...)في الإصدار 23 من واجهة برمجة التطبيقات. b/123893059 - تم إصلاح
NullPointerExceptionعلى الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/123835104
الإصدار 1.0.0-beta04
4 شباط (فبراير) 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم تحسين جدولة PeriodicWork لعملية التنفيذ المستندة إلى AlarmManager.
- تم إصلاح حالة تعذُّر تتبُّع WorkManager للقيود بشكل صحيح عند استخدام التنفيذ المستند إلى AlarmManager. b/123379508
- تم إصلاح مشكلة تعذُّر إعادة محاولة تنفيذ العمل في WorkManager عند إيقاف العملية نهائيًا عند استخدام التنفيذ المستند إلى AlarmManager. b/123329850
- تم إصلاح حالة كانت تتسبّب في تسرُّب Wakelocks في WorkManager عند استخدام التنفيذ المستند إلى AlarmManager.
الإصدار 1.0.0-beta03
25 يناير 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- لقد قدّمنا انحدارًا
1.0.0-beta02كان يتسبّب في عدم تنفيذ العمل بشكل صحيح في بعض الحالات. b/123211993 - تم إصلاح مشكلة عدم الالتزام بشكلٍ صحيح بتوقيت التراجع. b/122881597
- تم إصلاح
ConcurrentModificationExceptionعلى الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات أو إصدار أقدم). هذا هو الجزء الثاني من الإصلاح الذي تم في1.0.0-beta02. b/121345393 - تمت إضافة
exported=falseإلى بعض المكوّنات في ملف البيان التي كانت تفتقر إلى هذه التعليقات التوضيحية. - تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في المستندات على مستوى الحزمة.
الإصدار 1.0.0-beta02
15 كانون الثاني (يناير) 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة استخدام حيث يمكن تشغيل العمل الدوري أكثر من مرة في كل فاصل زمني على الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات). b/121998363
- تم إصلاح
ConcurrentModificationExceptionعلى الأجهزة التي تعمل بالإصدار 5.1 (المستوى 22 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم من نظام التشغيل Android. b/121345393 - تم إصلاح مشكلة التنفيذ الخاطئ للعمل عندما لا يتم استيفاء القيود على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 22) أو الإصدارات الأقدم. b/122578012
- تم تحسين طريقة التعامل مع إكمال العمل بشكل أسرع في بعض الحالات الحدّية. b/122358129
- تمت إضافة تغيير لمعالجة مشاكل التزامن المحتملة بين مثيلات متعددة من
LiveDataالتي تستخدمها WorkManager. - تم الانتقال إلى استخدام التبعية
Room1.1.1بدلاً من1.1.1-rc01، وهاتان النسختان متطابقتان. b/122578011
الإصدار 1.0.0-beta01
19 كانون الأول (ديسمبر) 2018
لا يتضمّن هذا الإصدار أي تغييرات في واجهة برمجة التطبيقات، ومن المتوقّع أن يظل WorkManager متوافقًا مع واجهة برمجة التطبيقات حتى الإصدار التالي ما لم تحدث مشكلة خطيرة. يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- لن يتم تشغيل مهام الأطفال التي تم إلغاؤها سابقًا والتي أكملها الوالدان بنجاح. b/120811767
- فئات تسجيل الدخول التي تمّت تهيئتها بشكلٍ صحيح (تظهر بشكلٍ أساسي أثناء الاختبارات)
الإصدار 1.0.0-alpha13
12 ديسمبر 2018
يتضمّن هذا الإصدار تغييرًا بسيطًا في واجهة برمجة التطبيقات سيكون مفيدًا لبعض مستخدمي Kotlin.
التغييرات في واجهة برمجة التطبيقات
- تم نقل
androidx.work.Resultليصبح فئة داخلية منListenableWorker. يمنع ذلك حدوث تعارضات في إعادة تصميم الرمز مع فئةResultذات المستوى الأعلى في Kotlin. هذا تغيير غير متوافق في واجهة برمجة التطبيقات. b/120564418
التغييرات غير المتوافقة في واجهة برمجة التطبيقات
- تم نقل
androidx.work.Resultليصبح فئة داخلية منListenableWorker.
الإصدار 1.0.0-alpha12
5 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار بعض التغييرات التي قد تؤدي إلى أعطال في واجهة برمجة التطبيقات. يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى أعطال في واجهة برمجة التطبيقات أدناه. من المرجّح أن يتم طرح هذا الإصدار كأول إصدار تجريبي. يتضمّن الإصدار alpha12 أيضًا تعديلات شاملة على المستندات.
التغييرات في واجهة برمجة التطبيقات
- يقدّم العنصر الجديد "
work-rxjava2" الميزة "RxWorker". هذهListenableWorkerتتوقّعSingle<Payload>. - تمت إزالة إمكانية استخدام Firebase JobDispatcher بسبب إيقافها نهائيًا قريبًا. يعني ذلك أنّه لن يتم تعديل عنصر
work-firebaseبعد الآن مع اقترابنا من الإصدار التجريبي. وسنعمل على إضافة خيار بديل في المستقبل. - تم دمج
PayloadفيResult. أصبحتResultالآن "فئة محكمة الإغلاق" تتضمّن ثلاث عمليات تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()(أوResult.success(Data)) وResult.failure()(أوResult.failure(Data)) وResult.retry(). تؤدي عمليات البحث عنListenableFutureالآن إلى عرضResultبدلاً منPayload. لا تتضمّنWorkerطرقًا للحصول على قيمةDataوضبطها. هذا تغيير غير متوافق مع الإصدارات السابقة. - تمت إضافة
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)والمتغيرات لتوفير دعم أفضل لمعرّفات الموارد الموحّدة (URI) للمحتوى الذي يتم تشغيله ببطء. b/119919774 - تمت إضافة خيار
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). تتطلّب هذه الطريقة استخدام الإصدار 26 من واجهة برمجة التطبيقات. - تمت إضافة طريقتَي الإضافة
Operation.await()وListenableFuture.await()في Kotlin. - تمت إعادة تسمية
Operation.getException()إلىOperation.getThrowable(). هذا تغيير غير متوافق مع الإصدارات السابقة. - لم يعُد الصف
ContentUriTriggersوالطُرق التي تشير إليه متاحَين للاستخدام العام. هذا تغيير غير متوافق مع الإصدارات السابقة. - تمت إزالة بقية طرق varargs في
WorkManagerوWorkContinuationوOneTimeWorkRequestلتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإنشاء، يمكنك تضمين وسيطات varargs الحالية فيArrays.asList(...). سنواصل تضمين إصدارات ذات وسيط واحد لكل طريقة. هذا تغيير غير متوافق مع الإصدارات السابقة. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)خيار منتج. كانوا يعرضون واجهة برمجة تطبيقات مربكة، فالطرق الحاليةcombineأسهل للفهم. هذا تغيير غير متوافق مع الإصدارات السابقة.
إصلاح الأخطاء
- أصبحت عمليات التنفيذ السابقة لإصدار Marshmallow أكثر موثوقية في استعادة المهام التي تم إيقافها بسبب إيقاف العملية نهائيًا.
- يتم تتبُّع
LiveDataالذي يتم رصده من خلالobserveForeverباستخدام WorkManager. هذه عملية نقل إصلاح من مكتبة Room إلى إصدار أقدم. b/74477406 - تعرض السمة
Data.Builder.build()الآن استثناءً إذا تجاوز حجم العنصر المتسلسل الحدّ الأقصى المسموح به. في السابق، كان ذلك يحدث فقط في سلسلة الخلفية حيث لا يمكنك التعامل معها بشكل صحيح. - تم التمييز بشكل أكبر بين العمل المتوقف والعمل الملغى، إذ ستعرض
getWorkInfoById()الرمزWorkInfoمعCANCELLEDStateأثناءListenableWorker.onStopped(). - اعتبار
nullResultعلى أنّها حالات تعذّر فيListenableWorkerb/120362353 - إصلاح تجريبي لأجهزة Shield Tablet التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات والتي كانت تعرض أحيانًا الخطأ
IllegalArgumentException. b/119484416
التغييرات غير المتوافقة في واجهة برمجة التطبيقات
- تمت إزالة إمكانية استخدام Firebase JobDispatcher بسبب إيقافها نهائيًا قريبًا. يعني ذلك أنّه لن يتم تعديل العنصر
work-firebaseمع اقترابنا من الإصدار التجريبي. وسنعمل على إضافة خيار بديل في المستقبل. - تم دمج
PayloadفيResult. أصبحتResultالآن "فئة محكمة الإغلاق" تتضمّن ثلاث عمليات تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()(أوResult.success(Data)) وResult.failure()(أوResult.failure(Data)) وResult.retry(). تؤدي طلباتك إلىListenableFutureالآن إلى عرضResultبدلاً منPayload. لا تتضمّنWorkerطرقًا للحصول على قيمةDataوضبطها. - تمت إضافة طريقتَي الإضافة
Operation.await()وListenableFuture.await()في Kotlin. - تمت إعادة تسمية
Operation.getException()إلىOperation.getThrowable(). - لم يعُد الصف
ContentUriTriggersوالطُرق التي تشير إليه متاحَين للاستخدام العام. - تمت إزالة بقية طرق varargs في
WorkManagerوWorkContinuationوOneTimeWorkRequestلتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإنشاء، يمكنك تضمين وسيطات varargs الحالية فيArrays.asList(...). سنواصل تضمين إصدارات ذات وسيط واحد لكل طريقة. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)خيار منتج. كانوا يعرضون واجهة برمجة تطبيقات مربكة، فالطرق الحاليةcombineأسهل للفهم.
الإصدار 1.0.0-alpha11
8 نوفمبر 2018
يحتوي هذا الإصدار على العديد من التغييرات التي ستصبح واجهة برمجة تطبيقات ثابتة في beta.
يتضمّن هذا الإصدار تغييرات في واجهة برمجة التطبيقات قد تؤدي إلى أعطال. يُرجى الاطّلاع على قسم التغييرات في واجهة برمجة التطبيقات التي قد تؤدي إلى أعطال أدناه.
التغييرات في واجهة برمجة التطبيقات
- تطرح
work-runtime-ktxCoroutineWorkerجديدًا. - تم تغيير اسم "
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تقبل varargs لـWorkRequests. هذا تغيير غير متوافق مع الإصدارات السابقة. استخدِم "المجموعات" بدلاً من ذلك. يمكنك استخدام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تقبل varargs لـWorkRequest. - سيؤدي محاولة
initializeWorkManagerأكثر من مرة واحدة لكل عملية إلى ظهورIllegalStateException.
الإصدار 1.0.0-alpha10
11 أكتوبر 2018
يتيح هذا الإصدار تنفيذ مهام غير متزامنة يتحكّم فيها المطوّر. يتضمّن هذا الإصدار تغييرات في واجهة برمجة التطبيقات قد تؤدي إلى أعطال. يُرجى الاطّلاع على قسم التغييرات في واجهة برمجة التطبيقات التي قد تؤدي إلى أعطال أدناه.
نتوقّع أن يدخل 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-alpha09
19 سبتمبر 2018
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف واحد يتضمّن المسار المستقل عن نظام التشغيل META-INF/proguard/androidx-annotations.pro"، يُرجى وضع ما يلي في ملف Gradle كحلّ مؤقت ريثما نحلّ المشكلة في الإصدار alpha10:
أنيق
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة إصلاح آخر كان مطلوبًا للخطأ "100 مهمة". b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب مشاكل التزامن. b/114705286
- تم تفويض المكالمات التي تم إجراؤها إلى
ConstraintTrackingWorker.onStopped(boolean)إلىWorkerالأساسي. b/114125093 - فرض الحد الأدنى الصحيح لتأخير التراجع في Firebase JobDispatcher b/113304626
- تحسينات على ضمانات سلاسل المحادثات الداخلية للمكتبة
- تم تصحيح مشكلة محتملة في إزالة التكرار
LiveDataداخليًا.
التغييرات في واجهة برمجة التطبيقات
- يمكنك الآن إنشاء مثيلات
Workerخاصة بك في وقت التشغيل من خلال تحديدWorkerFactoryكجزء منWorkManager.Configuration. المصنع الاحتياطي هوDefaultWorkerFactory، ويتطابق مع سلوك الإصدارات السابقة من WorkManager.- تم الآن وضع علامة على أدوات الإنشاء التلقائية للفئتين
WorkerوNonBlockingWorkerللإشارة إلى أنّه سيتم إيقافها نهائيًا. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)) واستدعاءsuper(Context, WorkerParameters)، لأنّ الإصدارات المستقبلية من WorkManager ستزيل الدالة الإنشائية التلقائية.
- تم الآن وضع علامة على أدوات الإنشاء التلقائية للفئتين
- لقد بدأنا استخدام العنصر الجديد
ListenableFutureداخليًا (بدون تبعيات Guava). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيساعد هذا التغيير في إتاحة إظهارNonBlockingWorkerفي النهاية. - إضافة إمكانية بدء عمل محدّد المدة في
TestDriverمن خلالTestDriver.setInitialDelayMet(UUID)وTestDriver.setPeriodDelayMet(UUID)b/113360060
التغييرات التي قد تؤدي إلى أعطال
- تم إيقاف الدالتَين الإنشائيتَين التلقائيتَين
WorkerوNonBlockingWorkerنهائيًا. يُرجى نقل البيانات إلى أداة الإنشاء الجديدة في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية الدالة الإنشائية التلقائية.
الإصدار 1.0.0-alpha08
27 أغسطس 2018
إصلاح الأخطاء
- تم تصنيف مكوّنات WorkManager بشكل صريح على أنّها غير متوافقة مع ميزة "التشغيل المباشر"، وبالتالي لا يتم تشغيلها أثناء استخدام هذه الميزة. في المستقبل، سنوفّر إصدارًا من WorkManager متوافقًا مع ميزة "التشغيل المباشر". b/112665532
- تم إصلاح المشكلة المتمثّلة في عدم تنفيذ العمل الذي تمت إعادة محاولته. b/112604021
- تم إصلاح مشكلة عدم تنفيذ العمل الدوري بشكل متكرّر (مرتبطة بالمشكلة أعلاه). b/112859683
- يتم الالتزام بسياسات التراجع عند تشغيل عملية التطبيق.
- تم تصحيح رسائل الاستثناء في
Dataللإشارة إلى أنّ الحد الأقصى هو 10 كيلوبايت. - تم خفض الحدّ الأقصى لقيمة
Configuration.setMaxSchedulerLimit(int)إلى 50 لاحتساب بعض وقت الاستجابة في إكمال معالجةJobScheduler. b/112817355
الإصدار 1.0.0-alpha07
16 أغسطس 2018
إصلاح الأخطاء
- تم إصلاح مشكلة محتملة في طلب بحث SQL يتضمّن حدودًا سالبة يمكن أن يعرض عددًا غير محدود من النتائج.
- يؤدي العمل الذي انتهى تنفيذه الآن إلى إلغاء جميع النُسخ المعلّقة من هذا العمل بشكل صحيح في أدوات الجدولة الأخرى. أدّى ذلك إلى تجاوز الحدّ الأقصى المسموح به لعدد المهام وهو
JobSchedulerمهمة. b/111569265 - تم إصلاح
ConcurrentModificationExceptionفيConstraintTracker. b/112272753 - تم تغيير تعليقات توضيحية لنوع القيمة التي تم إرجاعها في
Data.getBooleanArray(String)وData.getIntArray(String)إلى@Nullableبدلاً من@NonNull. b/112275229
التغييرات في واجهة برمجة التطبيقات
- توسّع
Workerالآن ليشمل فئة جديدة، وهيNonBlockingWorker. لا يؤثّر ذلك في أي استخدام حالي. في المستقبل، سيصبحNonBlockingWorkerكيانًا متوافقًا تمامًا مع حلول سلاسل التعليمات المخصّصة. - تم تغيير تعليقات توضيحية لنوع القيمة التي تم إرجاعها في
Data.getBooleanArray(String)وData.getIntArray(String)إلى@Nullableبدلاً من@NonNull. b/112275229 - إضافات Kotlin: تم إيقاف
Map.toWorkData()نهائيًا وإضافةworkDataOf(vararg Pair<String, Any?>)على المستوى الأعلى لتكون أكثر اتساقًا مع واجهات برمجة التطبيقات الحالية.
الإصدار 1.0.0-alpha06
1 أغسطس 2018
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل: b/111801342
- تم إصلاح الخطأ الذي يتسبّب في عدم تشغيل
PeriodicWorkفي الوقت المحدّد عندما يكون الجهاز في وضع "السكون". b/111469837 - تم إصلاح مشكلة تداخل البيانات عند تتبُّع القيود، ما يؤدي إلى تعطُّل
WorkManager. googlecodelabs/android-workmanager/issues/56 - أنشئ
WorkRequestفريدة عند استخدامWorkRequest.Builder#build(). b/111408337 - فعِّل استخدام
RescheduleReceiverفقط عندما تكون هناكWorkRequestتتطلّب ذلك. b/111765853
الإصدار 1.0.0-alpha05
24 يوليو 2018
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة تعليق توضيحي إلى "
WorkManager.getInstance()" باستخدام "@NonNull" بدلاً من "@Nullable". بدلاً من ذلك، إذا لم تتم تهيئة العنصر المفرد بشكل صحيح في حالات التهيئة اليدوية، ستعرض الطريقةIllegalStateException. هذا التغيير في واجهة برمجة التطبيقات هو تغيير غير متوافق مع الإصدارات السابقة. - تمت إضافة واجهة برمجة تطبيقات جديدة،
Configuration.Builder.setMinimumLoggingLevel(int)، يمكنها التحكّم في مستوى تفصيل WorkManager. تسجّل WorkManager تلقائيًاLog.INFOأو أعلى. - تم تغيير توقيع
Data.getString()لكي لا يأخذ قيمة تلقائية (تكون القيمةnullضمنيًا). هذا تغيير غير متوافق في واجهة برمجة التطبيقات. - تم وضع علامة
@hideعلى بعض الطرق التي يجب استخدامها داخليًا فقط. ويشمل ذلك الدالة الإنشائيةConstraintsوData.toByteArray()وData.fromByteArray(byte[]). هذا التغيير في واجهة برمجة التطبيقات غير متوافق مع الإصدارات السابقة.
إصلاح الأخطاء
- لم يعُد WorkManager ينفّذ العمل أثناء الحالات المعروفة لعملية الاحتفاظ التلقائي بنسخة احتياطية. وقد يكون ذلك قد أدّى إلى حدوث عُطل. b/110564377
- تم إصلاح مشكلة الجدولة المزدوجة لـ
PeriodicWorkRequestعند استخدامJobScheduler. b/110798652 - تم إصلاح مشكلة عدم تنفيذ
PeriodicWorkRequestبشكلٍ صحيح بعد وضع الجهاز في وضع "السكون". b/111469837 - تم إصلاح مشكلة التأخيرات الأولية عند استخدام Firebase JobDispatcher. b/111141023
- تم إصلاح بعض المشاكل المحتملة المتعلقة بتزامن العمليات والتوقيت.
- تم تحرير
BroadcastReceiverلم يعُد هناك حاجة إليها بشكل صحيح. - تحسين أداء إعادة الجدولة عند إعادة تشغيل التطبيقات بعد فرض إغلاقها
- يجب أن يكون من المسموح استدعاء
TestScheduler.setAllConstraintsMet(UUID)قبل أو بعد إضافةWorkRequestالمحدّدة إلى قائمة الانتظار. b/111238024
التغييرات التي قد تؤدي إلى أعطال
- تمت إضافة تعليق توضيحي إلى "
WorkManager.getInstance()" باستخدام "@NonNull" بدلاً من "@Nullable". - تم تغيير توقيع
Data.getString()لكي لا يأخذ قيمة تلقائية (تكونnullضمنيًا). - تم وضع العلامة
@hideعلى بعض الطرق التي يجب استخدامها داخليًا فقط. ويشمل ذلك الدالة الإنشائيةConstraintsوData.toByteArray()وData.fromByteArray(byte[]).
الإصدار 1.0.0-alpha04
26 يونيو 2018
إصلاح الأخطاء
- تتم الآن إعادة جدولة
PeriodicWorkRequestبشكل صحيح عند استخدام التنفيذ المستند إلىAlarmManager. - تم إصلاح خطأ محتمل في ANR عند إعادة جدولة جميع المنفّذين بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
- تمت إضافة تعليقات توضيحية بشأن إمكانية قبول القيم الخالية إلى واجهات برمجة تطبيقات مختلفة في WorkManager. b/110344065
- تسجيل الاستثناءات غير المعالَجة التي تحدث أثناء تنفيذ Worker. b/109900862
- تم السماح بعمليات نقل البيانات المدمرة لقاعدة البيانات في حال قررت الرجوع إلى إصدار قديم من WorkManager. b/74633270
- تم إصلاح مشكلة تعطُّل عملية نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا حدثت فقط إذا كنت تستخدم تنسيق العلامة الضمنية نفسه.
الإصدار 1.0.0-alpha03
19 يونيو 2018
إصلاح الأخطاء
تم إصلاح مشكلة التزامن في التنفيذ المستند إلى
AlarmManager. b/80346526.تم إصلاح مشكلة تكرار المهام عند استخدام
JobSchedulerبعد إعادة تشغيل الجهاز.تستمر الآن المهام التي تتضمّن مشغّلات معرّف موارد منتظم للمحتوى في العمل حتى بعد إعادة التشغيل. b/80234744
تعديلات على المستندات: b/109827628 وb/109758949 وb/80230748
تم إصلاح عُطل كان يحدث عند إعادة وضع
WorkRequestفي قائمة الانتظار. b/109572353.تم إصلاح تحذيرات برنامج الترجمة البرمجية Kotlin عند استخدام التبعية
work-runtime-ktx.يستخدم WorkManager الآن الإصدار
Roomمن 1.1.1-rc1.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
getStatusesSync()، وهي النسخة المتزامنة منWorkContinuation.getStatuses(). - تتضمّن
Workerإمكانية التمييز بين الإلغاء الذي بدأه المستخدم والإيقاف المؤقت الذي طلبه نظام التشغيل. تعرض الدالةWorker.isStopped()القيمةtrueإذا تم طلب أي نوع من الإيقاف. تعرضWorker.isCancelled()القيمةtrueعندما يتم إلغاء العمل بشكل صريح. b/79632247 - إضافة إمكانية استخدام JobParameters#getNetwork() في الإصدار 28 من واجهة برمجة التطبيقات يتم عرض ذلك من خلال
Worker.getNetwork(). - تمت إضافة
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)حتى تتمكّن من فرض عدد المهام التي يمكن إرسالها إلىJobSchedulerأوAlarmManager. يساعد ذلك في منعWorkManagerمن حجز جميع خاناتJobSchedulerالمتاحة. - تمت إضافة
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)التي تساعد في تحديد نطاق من معرّفات الوظائفJobSchedulerالآمنة لاستخدامها فيWorkManager. b/79996760 - تعرض
Worker.getRunAttemptCount()عدد مرات التشغيل الحالية لـWorkerمعيّن. b/79716516 - تتيح لك السمة
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)إضافةPeriodicWorkRequestفريد إلى قائمة الانتظار. b/79600647 - يؤدي
WorkManager.cancelAllWork()إلى إلغاء جميعWorker. يمكن للمكتبات التي تعتمد علىWorkManagerالاستعلام عن آخر مرة تم فيها استدعاء هذه الطريقة باستخدامWorkManager.getLastCancelAllTimeMillis()لإجراء عملية تنظيف إضافية للحالة الداخلية. - تمت إضافة
WorkManager.pruneWork()لإزالة المهام المكتملة من قاعدة البيانات الداخلية. b/79950952، b/109710758
التغييرات في السلوك
- تمت إضافة علامة ضمنية لجميع
WorkRequests، وهي اسم الفئة المؤهَّل بالكامل لـWorker. يتيح ذلك إمكانية إزالةWorkRequestبدونtagأو عندما لا يتوفّرid. b/109572351
التغييرات التي قد تؤدي إلى أعطال
- تمت إعادة تسمية
Worker.WorkerResultإلىWorker.Result. - تتضمّن
Worker.onStoppedالآن المَعلمة إضافيةisCancelledالتي تم ضبطها علىtrueعندما تم إلغاءWorkerبشكلٍ صريح.
الإصدار 1.0.0-alpha02
24 مايو 2018
إصلاح الأخطاء
- تم إصلاح
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()كبديل.
الإصدار 1.0.0-alpha01
8 مايو 2018
تسهّل WorkManager عملية جدولة وتنفيذ العمل في الخلفية الذي يتم تنفيذه بشكل مضمون مع مراعاة القيود. هذا الإصدار الأوّلي هو 1.0.0-alpha01.