WorkManager
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 22 أكتوبر 2025 | 2.11.0 | - | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على WorkManager، يجب تضمين مستودع Google Maven في مشروعك باتّباع الخطوات التالية:
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
dependencies { def work_version = "2.11.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.11.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.11
الإصدار 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لمنع عمليات IPC غير الضرورية (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 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle" (مثل الإصدار 3.3 من R8) وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون 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) - إضافة معالجات أخطاء مخصّصة لـ Workers (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) - السماح بضبط Clock من خلال الإعدادات واستخدامه لتحديد تسلسل تنفيذ اختبارات 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فارغًا الآن، وأصبحت الأدوات المساعدة الأخرى الخاصة بلغة Kotlin متاحة الآن في العنصر الرئيسيwork-runtime.CoroutineWorker(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بطريقة غير مزعجة، مع الحفاظ على وقت الإضافة الأصلي والتسلسل وما إلى ذلك. يمكنك الاطّلاع على منشور المدوّنة المفصّل حول هذه الميزة، بالإضافة إلى مستندات Java الخاصة بـ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 على حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (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.Initializerالأخرى من استخدامها كعناصر تابعة. (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.Initializerالأخرى من استخدامها كعناصر تابعة. (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 لاستهداف الإصدار 8 من Java (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التي يمكن أن يلتقطها المجدول أثناء المعالجة. لا تزال الطلبات تُنفَّذ بترتيب الأولوية. (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أثناء المعالجة لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتم تأخيره والذي تم استيفاء قيوده. الآن، يتتبّع برنامج الجدولة قيد التنفيذWorkRequests التي قد يتم تنفيذها في المستقبل، بما في ذلك 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 APIs مباشرةً 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.BuilderوwithStatesو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أكثر فعالية. في السابق، كان برنامج Scheduler الذي لا يزال قيد التنفيذ لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتم تأخيره والذي تم استيفاء قيوده. الآن، يتتبّع برنامج الجدولة قيد التنفيذWorkRequestالتي قد يتم تنفيذها في المستقبل، بما في ذلكPeriodicWorkRequest. لا يلتزم Scheduler أثناء التنفيذ أيضًا بقيود الجدولة (ولكنّه يظلّ مقيّدًا بحجم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) - إصلاح الخطأ
IssueRegistryفي أداة lint الخاصة بمكتبة WorkManager نشكر @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)
- تم تحسين إدارة مراحل نشاط "الخدمة التي تعمل في المقدّمة" لـ "عمليات الخلفية" التي تستغرق وقتًا طويلاً. (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. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- يمكن الآن لـ
ListenableWorkerضبط مستوى التقدّم من خلال واجهة برمجة التطبيقات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واحد أو أكثر من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واحد أو أكثر منWorkerFactoryالمسجّلة باستخدامDelegatingWorkerFactory. b/131435993تمت إضافة إمكانية تخصيص
Executorالذي يستخدمه WorkManager في جميع عمليات حفظ البيانات الداخلية من خلالConfiguration.Builder.setTaskExecutor.تحسين المستندات حول
WorkRequest.keepResultsForAtLeast(b/130638001) والتهيئة عند الطلب وPeriodicWorkRequest.Builder(b/131711394).
الإصدار 2.1.0-alpha01
24 أبريل 2019
تم طرح الإصدار 2.1.0-alpha01 من WorkManager. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة. يُرجى العِلم أنّه اعتبارًا من هذا الإصدار، ستتوفّر ميزات جديدة لن يتم نقلها إلى الإصدار 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
تم طرح الإصدار 2.0.1 من WorkManager. هذا الإصدار مطابق للإصدار 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 - تم تعديل المستندات الخاصة بـ
PeriodicWorkRequests للإشارة إلى أنّ وقت العمل المرن غير متاح على الإصدار 23 من واجهة برمجة التطبيقات. - تم إصلاح بعض الروابط المعطّلة في مستندات Kotlin.
الإصدار 2.0.0
الإصدار 2.0.0
20 آذار (مارس) 2019
تم طرح الإصدار 2.0.0 من WorkManager. هذا الإصدار مطابق للإصدار 2.0.0-rc01 وهو إصدار AndroidX الثابت من الإصدار 1.0.0 مع تبعيات 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
Groovy
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
تم طرح الإصدار 1.0.1 من WorkManager. هذا الإصدار مطابق للإصدار 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 الآن بشكل صحيح مع
flexwindows بالنسبة إلى PeriodicWorkRequests. 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 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/121345393 - تم إصلاح مشكلة التنفيذ الخاطئ للعمل عندما لا يتم استيفاء القيود على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/122578012
- تم تحسين طريقة التعامل مع إكمال العمل بشكل أسرع في بعض الحالات الحدّية. b/122358129
- تمت إضافة تغيير لمعالجة حالات التزامن المحتملة بين مثيلات متعددة من
LiveDataالتي يستخدمها WorkManager. - تم الانتقال إلى استخدام التبعية
Roomبدلاً من1.1.1-rc01، وهاتان النسختان متطابقتان. b/1225780111.1.1
الإصدار 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(). - اعتبار
nullResults حالات تعذُّر في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-ktxتقدّمCoroutineWorkerجديدًا.- تمت إعادة تسمية
WorkStatusإلىWorkInfo. تمت إعادة تسمية جميع صيغ الطريقةgetStatusلتصبح صيغgetWorkInfoالمقابلة. هذا التغيير قد يؤدي إلى عطل. - لم يعُد
ListenableWorker.onStopped()يقبل وسيطة منطقية تمثّل ما إذا تم إلغاءWorkRequest. لم يعُدWorkManagerيميّز بين هذين النوعين. هذا التغيير قد يؤدي إلى عطل. - تمت إعادة تسمية حزمة
androidx.work.testلتصبح حزمةandroidx.work.testing. هذا التغيير قد يؤدي إلى عطل. - لم تعُد أدوات الضبط في
Constraintsجزءًا من واجهة برمجة التطبيقات العامة. هذا التغيير قد يؤدي إلى عطل. - كانت الدالتان
WorkerParameters.getTriggeredContentUris()وWorkerParameters.getTriggeredContentAuthorities()تعرضان مصفوفات في السابق. الآن، تُرجع هذه الطرق "مجموعات". هذا التغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
ListenableWorker.onStartWork()إلىListenableWorker.startWork(). هذا التغيير قد يؤدي إلى عطل. - لم يعُد المنشئ الخاص بـ
WorkStatusجزءًا من واجهة برمجة التطبيقات العامة. هذا التغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()وConfiguration.getMinJobSchedulerID()إلىConfiguration.getMinJobSchedulerId()وConfiguration.getMaxJobSchedulerId()على التوالي. هذا التغيير قد يؤدي إلى عطل. - تمت إضافة العديد من التعليقات التوضيحية
@NonNullإلى واجهة برمجة التطبيقات العامة لتحسين سهولة استخدامها. - أضِف
WorkManager.enqueueUniqueWork()API إلى قائمة انتظارOneTimeWorkRequests الفريدة بدون الحاجة إلى إنشاء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 لـWorkRequests. - سيؤدي الآن محاولة
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:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة إصلاح آخر كان مطلوبًا لحلّ الخطأ "100 مهمة". b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب حالات التزامن. b/114705286
- يتم تفويض طلبات
ConstraintTrackingWorker.onStopped(boolean)إلىWorkerالأساسي. b/114125093 - فرض الحد الأدنى الصحيح لتأخير التراجع في Firebase JobDispatcher b/113304626
- تحسين ضمانات سلاسل المحادثات داخل المكتبة
- تم تصحيح مشكلة محتملة في إزالة التكرار
LiveDataداخليًا.
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء مثيلات
Workerخاصة بك في وقت التشغيل عن طريق تحديدWorkerFactoryكجزء منWorkManager.Configuration. المصنع الاحتياطي هوDefaultWorkerFactory، وهو يتطابق مع سلوك الإصدارات السابقة من WorkManager.- تم الآن وضع علامة على أدوات الإنشاء التلقائية لكلّ من
WorkerوNonBlockingWorkerللإشارة إلى أنّها متوقّفة نهائيًا. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)) واستدعاءsuper(Context, WorkerParameters)، لأنّ الإصدارات المستقبلية من WorkManager ستزيل الدالة الإنشائية التلقائية.
- تم الآن وضع علامة على أدوات الإنشاء التلقائية لكلّ من
- لقد بدأنا استخدام العنصر الجديد
ListenableFutureداخليًا (بدون تبعيات 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
تغييرات واجهة برمجة التطبيقات
- تمت إضافة التعليق التوضيحي
@NonNullإلىWorkManager.getInstance()بدلاً من@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
التغييرات التي قد تؤدي إلى أعطال
- تمت إضافة التعليق التوضيحي
@NonNullإلىWorkManager.getInstance()بدلاً من@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بعد إعادة تشغيل الجهاز.تستمر الآن المهام التي تتضمّن مشغّلات معرّف الموارد المنتظم (URI) للمحتوى في العمل بعد إعادة التشغيل. 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
التغييرات في السلوك
- تمت إضافة علامة ضمنية لجميع
WorkRequest، وهي اسم الفئة المؤهَّل بالكامل لـ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
تغييرات واجهة برمجة التطبيقات
- يمكن أن تتفاعل
Workers مع إيقافها. يمكن استخدام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.