WorkManager
آخر تعديل | الإصدار الثابت | إصدار مرشح | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
30 تشرين الأول (أكتوبر) 2024 | 2.10.0 | - | - | - |
الإعلان عن التبعيات
لإضافة تبعية على WorkManager، يجب إضافة مستودع Google Maven إلى مشروعك:
أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle
ل
تطبيقك أو وحدتك:
Groovy
dependencies { def work_version = "2.9.1" // (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.9.1" // (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. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 2.10
الإصدار 2.10.0
30 تشرين الأول (أكتوبر) 2024
تم تحرير androidx.work:work-*:2.10.0
. يتضمّن الإصدار 2.10.0 عمليات الربط هذه.
التغييرات المهمة منذ الإصدار 2.9.1
- تمت إضافة علامات تتبُّع إلى "المهام" من
WorkManager
، ما يسهّل فهم "adb shell dumpsys jobscheduler" كثيرًا لأنّه سيحتوي على اسم "العامل" الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبّع حول المناطق الرئيسية فيWorkManager
. - تمت إضافة
Configuration.workerCoroutineContext
للتحكّم في أداة الإرسال التي يتم فيها تنفيذCoroutineWorker
. - يمكن للمطوّرين تحديد
NetworkRequest
كقيد لأحد العمال من خلال الطريقةConstraints.setRequiredNetworkRequest
. يتيح ذلك التحكّم بشكل أدق في الشبكة التي يجب أن يعمل عليها هذا العامل. WorkManager
تم الآن تجميع الإصدار 2.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" كثيرًا لأنّه سيحتوي على اسم "العامل" الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبّع حول المناطق الرئيسية في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 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) ولجميع الإصدارات عند استخدام AGP 8.1 أو إصدار أحدث (مثل D8 الإصدار 8.1). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)
الإصدار 2.10.0-alpha02
17 نيسان (أبريل) 2024
تم تحرير androidx.work:work-*:2.10.0-alpha02
. يتضمّن الإصدار 2.10.0-alpha02 هذه المساهمات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية إصدار نطاقات التتبُّع من خلال
@RestrictTo
Tracer
قابل للضبط في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
واستخدام سلسلة المهام الرئيسية الفعلية. - تم نقل واجهات برمجة التطبيقات الخاصة بـ Coroutines، مثل
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
لعمال عناوين URL للمحتوى من أجل منحهم خانات مضمونة فيJobScheduler
لمنع فقدان تعديلات المحتوى في حال ارتفاع عدد عمليات البحث. يمكن ضبط الحدّ الأقصى من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تتم إضافة قيود إلى
WorkInfo
. (I162c0)
الإصدار 2.9.0-rc01
18 تشرين الأول (أكتوبر) 2023
تم تحرير androidx.work:work-*:2.9.0-rc01
. يحتوي الإصدار 2.9.0-rc01 على هذه المراجعات.
- لم يتم إجراء أي تغييرات منذ الإصدار التجريبي الأخير.
الإصدار 2.9.0-beta01
6 أيلول (سبتمبر) 2023
تم تحرير androidx.work:work-*:2.9.0-beta01
. يحتوي الإصدار 2.9.0-beta01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة ثوابت لأسباب التوقف التي يعرضها
WorkInfo.stopReason
وListenableWorker.stopReason
(I0cc00)
الإصدار 2.9.0-alpha02
26 تموز (يوليو) 2023
تم تحرير androidx.work:work-*:2.9.0-alpha02
. يحتوي الإصدار 2.9.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- يوفّر
WorkManager
الآن تلميحًا عن سبب إيقاف عامل في السابق. يمكن إجراء طلب بحث من العامل نفسه من خلال طريقةgetStopReason()
أو منWorkInfo
من خلالgetStopReason()
.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
stopReason
إلىWorkInfo
. وتوفّرstopReason
بعد تشغيل العامل. قد يكون ذلك مفيدًا في إعداد تقاريرstopReason
بطريقة قابلة للاستخدام، لأنّه بعد إيقاف أحد عمال الجلسة، يمكن إيقاف التطبيق نفسه بسرعة كبيرة. (I21386) - السماح بضبط الساعة من خلال الإعدادات واستخدامها لتحديد تسلسل تنفيذ اختبارات Worker (Ic586e)
- تمت إضافة طريقة
getStopReason()
إلىListenableWorker
التي تشير إلى سبب إيقاف العامل. (I07060) - تمت إضافة
WorkManagerTestInitHelper#closeWorkDatabase()
لتجنُّب تحذير Closeguard بشأن الموارد التي تم تسريبها. (Ia8d49)
إصلاح الأخطاء
- تمّت إضافة إمكانية تجاوز
overrideNextScheduleTime
باستخدامTestDriver
وإصلاح المشاكل المتعلّقة بقابلية الاختبار. (Ic2905)
الإصدار 2.9.0-alpha01
7 حزيران (يونيو) 2023
تم تحرير androidx.work:work-*:2.9.0-alpha01
. يحتوي الإصدار 2.9.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- إمكانية المراقبة من خلال
Flow
بدلاً منLiveData
، يمكن الآن مراقبة مستوى تقدّم "العامل" من خلالWorkManager.getWorkInfosFlow
وطرق مماثلة في Flow. - تحديد جداول زمنية دقيقة للعاملين المتكررين من خلال
setNextScheduleTimeOverride
يتيح ذلك إجراء عملية حسابية ديناميكية لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات التحديث التكيُّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون أي تغييرات. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
مع هذه الأساليب لتجنُّب إلغاء عامل حالي أثناء جدولة العامل التالي. WorkManager
يجري اختبارًا باستخدام ميزة "مطابقة سلاسل المحادثات" في مرحلة الإنتاج. يمكن استخدامExecutorsMode.PRESERVE_EXECUTORS
للحفاظ على أدوات التنفيذ التي تم ضبطها فيConfiguration
واستخدام سلسلة المهام الرئيسية الحقيقية.- تم نقل واجهات برمجة التطبيقات الخاصة بـ Coroutines، مثل
CoroutineWorker
، من العنصر الإضافيwork-runtime-ktx
إلى العنصر الرئيسيwork-runtime
. أصبح الحقلwork-runtime-ktx
فارغًا الآن.
تغييرات واجهة برمجة التطبيقات
- أصبحت طريقة وضع تصميم
WorkInfo
علنية الآن، ما قد يكون مفيدًا في الاختبار. (Ia00b6، b/209145335) - أصبح
work-runtime-ktx
فارغًا الآن، وأصبحCoroutineWorker
والأدوات الأخرى الخاصة بـ kotlin متاحة الآن في العنصرwork-runtime
الرئيسي. (I71a9a) - تمت إضافة طريقة
setNextScheduleTimeOverride
التي تتيح ضبط جداول العمل الدورية بدقة (I3b4da) - تمت إعادة تسمية
getEarliestRunTimeMillis
إلىgetNextScheduleTimeMillis
. (I2bd7a) - تتم إضافة معلومات وقت التشغيل المجدوَل التالي إلى
WorkInfo
. (I797e4) - تتم إضافة معلومات التأخير الأوّلي وفترة التكرار إلى
WorkInfo
. (I52f2f) - تمت إضافة طريقة مراقبة العمال من خلال "العمليات" من خلال الطرق
getWorkInfosByTagFlow
وgetWorkInfoByIdFlow
وgetWorkInfosForUniqueWorkFlow
وgetWorkInfosFlow
(If122a). - تمت إضافة التعليقات التوضيحية
@RequiresApi(...)
غير المتوفّرة إلى وظائف الإنشاء والخصائص في "القيود". وهي الآن متوافقة مع التعليقات التوضيحية المقابلة لها فيConstraints.Builder
التي كانت موجودة في الإصدارات الأولى منWorkManager
. (I6d7d2) - تمّ وضع حدّ منفصل في
WorkManager
لعمال عناوين URL للمحتوى من أجل منحهم خانات مضمونة فيJobScheduler
لمنع فقدان تعديلات المحتوى في حال ارتفاع عدد عمليات البحث. يمكن ضبط الحدّ من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تتم إضافة قيود إلى
WorkInfo
. (I162c0)
الإصدار 2.8
الإصدار 2.8.1
22 آذار (مارس) 2023
تم تحرير androidx.work:work-*:2.8.1
. يحتوي الإصدار 2.8.1 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ ANR في
RescheduleReceiver
الذي لم يكن يعالج في السابق بثتَين متزامنتَين بشكل صحيح. (b/236906724)
الإصدار 2.8.0
8 شباط (فبراير) 2023
تم تحرير androidx.work:work-*:2.8.0
. يحتوي الإصدار 2.8.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 2.7.0
الميزات الجديدة
- تمت إضافة إمكانية تعديل
WorkRequests
بطريقة غير مزعجة، مع الحفاظ على وقت إضافة الطلبات إلى "قائمة الانتظار" الأصلي وعمليات الربط وما إلى ذلك. اطّلِع على مقالتنا التفصيلية على المدوّنة حول هذه الميزة، بالإضافة إلى مستندات javadoc الخاصة بـWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
لمعرفة مزيد من التفاصيل.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل العمل مع الحفاظ على وقت إضافة المهمة إلى "قائمة الانتظار" الأصلي وسلسلتها.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهو مشابه لـREPLACE
الحالي، ولكنه أقل تدخلاً: لا يلغي عامل التشغيل إذا كان قيد التشغيل حاليًا ويحافظ على وقت إضافة المهمة إلى "قائمة الانتظار"، ويتم احتساب التأخير الأولي والفترة من وقت إضافة المهمة إلى "قائمة الانتظار" الأصلي، بدلاً من وقت التعديل. تم إيقافREPLACE
نهائيًا للحد من الالتباس بينREPLACE
وUPDATE
اللذَين يحملان اسمًا مشابهًا جدًا. إذا كنت لا تزال تريد الاحتفاظ بالدلالات السابقة لـREPLACE
، يمكن استخدامCANCEL_AND_REENQUEUE
الذي تمت إضافته حديثًا والذي يتطابق معREPLACE
. (I985ed، b/219446409) - تمت إضافة إمكانية اعتراض استثناءات الجدولة من خلال توفير
Consumer<Throwable>
عبر setSchedulingExceptionHandler) - تمت إضافة إمكانية توفير
Consumer<Throwable>
من خلال setInitializationExceptionHandler لتحديد ما إذا كانت هناك مشاكل عند محاولة بدء WorkManager. - تم نقل أدوات المساعدة المضمّنة في
OneTimeWorkRequest
وPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، b/209145335) - تمت إضافة الطرق المساعِدة
WorkQuery.fromIds
وWorkQuery.fromStates
وWorkQuery.fromUniqueWorkNames
وWorkQuery.fromTags
لإنشاءWorkQuery
مباشرةً. (b/199919736) (If48f2, b/199919736) - تمت إضافة
getForegroundInfo
إلىWorker
. (Ic1ead) RxWorker
في كلّ من RxJava 2 وRxJava 3 يتضمّن الآنsetForeground
الذي يعرضCompletable
ويمكن استخدامه بدلاً منsetForegroundInfoAsync
الذي يعرضListenableFuture
.-
RxWorker
في كلّ من RxJava 2 وRxJava 3 يتضمّنgetForegroundInfo
الذي يعرضSingle
ويمكن استخدامه بدلاً منgetForegroundInfoAsync
الذي يعرضListenableFuture
. (b/203851459) - يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام
Constraints.Builder
، ما يُعدّ مناسبًا لمستخدمي Kotlin. (Idc390، b/137568653) - تمت إضافة إمكانية التحقّق مما إذا تمّت تهيئة
WorkManager
. تمت أيضًا إضافة واجهة برمجة تطبيقاتgetConfiguration()
جديدة لمطوّري المكتبات للحصول على الإعدادات التي تمّت بدءWorkManager
بها. (I6eff3، b/212300336)
إصلاح الأخطاء
- تم إصلاح مشكلة في المخطِّط الجشع الذي كان يمنع تشغيل وحدات العمل على الفور عند ازدياد عدد المهام. (I9686b، b/248111307)
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذنPOST_NOTIFICATIONS
في حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (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
، التي لم تكن تأخذ في الاعتبار سابقًا معلومات الجيل الجديد. (4977 سم³)
الإصدار 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 مباشرةً من ids. (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
للتغيّر، وذلك لحلّ مشكلة تعطُّل عند استهداف Android 12. (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 من خلال تفويض الخدمات التي تعمل في المقدّمة.
تغييرات واجهة برمجة التطبيقات
- إتاحة استخدام
WorkRequest
المستعجلة
الإصدار 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" />
تمت إضافة دعم لـ "العمال" الذين يمكنهم العمل في أي عملية. (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 على هذه المراجعات.
الميزات الجديدة
إضافة دعم لـ "العمال" الذين يمكن تشغيلهم في أي عملية (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 دائمًا مع العملية المحدّدة. يتم أيضًا تشغيل جدولة العمليات الداخلية في العملية المحدّدة.
- لاستخدام
- في بعض الأحيان، لا يمكن لـ
ActivityManager
إنشاء مثيلJobService
لبدء مهمة. يؤدي ذلك إلى إيقاف المهمة الأساسية بدون إشعار بسبب خطأ في المنصة. يضمن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 Studio.
الإصدار 2.5.0-rc01
13 كانون الثاني (يناير) 2021
تم تحرير androidx.work:work-*:2.5.0-rc01
. يحتوي الإصدار 2.5.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خلل كان يؤدي إلى عدم إلغاء صلاحية
getWorkInfosLiveData
بشكل صحيح بعد تعديل الكيانات عند استخدام واجهة برمجة التطبيقات المستندة إلىWorkQuery
. (aosp/1540566، b/173769028) - تم إصلاح خطأ كان يؤدي إلى عدم وضع علامة "ناجحة" على معاملات قاعدة البيانات في بعض الحالات النادرة. ويؤدي ذلك إلى حدوث مشاكل على بعض أجهزة Motorola. (aosp/1535368، b/175944460)
- تم إصلاح خطأ لتجاهل
NoSuchElementException
عند محاولة إلغاء الربط بعملية غير نشطة. (aosp/1530589) - يمكنك تحسين
ConstraintTrackingWorker
لإيقافListenableWorker
فقط إذا لم يتم إيقافه من قبل. (aosp/1496844، b/172946965) - تعديل مكتبات androidx.work لاستهداف Java 8 (Ibd2f2)
الإصدار 2.5.0-beta02
2 كانون الأول (ديسمبر) 2020
تم تحرير androidx.work:work-*:2.5.0-beta02
. يحتوي الإصدار 2.5.0-beta02 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ في
androidx.work:work-multiprocess
حيث حظر WorkManager عن غير قصد سلسلة المهام التي تُجري عملية الاتصال عند محاولة الربط بالعملية المحدّدة. (aosp/1475538) - تم إصلاح خلل في عدم توفّر
PeriodicWorkRequest
بشكل صحيح. (b/172475041، aosp/1489577) - تمت إضافة حل بديل لأحد أخطاء النظام الأساسي عند إيقاف الخدمة التي تعمل في المقدّمة عند استخدام واجهات برمجة تطبيقات
setForeground*
. (b/170924044، aosp/1489901)
الإصدار 2.5.0-beta01
28 تشرين الأول (أكتوبر) 2020
تم تحرير androidx.work:work-*:2.5.0-beta01
. يحتوي الإصدار 2.5.0-beta01 على هذه المراجعات.
الميزات الجديدة
- يحدّ
WorkManager
تلقائيًا من عددWorkRequest
التي يمكن أن يرصدها جدول التشغيل الجاري. ولا يزال يتم تنفيذ الطلبات بترتيب "الأوّل في الداخل أولاً في الخارج". (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 لتتمكّن من استخدام
id
لطلب البحث عنWorkInfo
. (aosp/1412372، b/157335295) - يتيح WorkManager للتطبيقات التي تستخدم عمليات متعددة استخدام عنصر جديد (
androidx.work:work-multiprocess:*
) لدعمها بشكل أفضل. ويساعد هذا العنصر الجديد في حلّ بعض المشاكل التي تواجهها التطبيقات الكبيرة، بما في ذلك:- يجب عادةً إعداد WorkManager في كل عملية تطبيق. وهذا ليس أمرًا جيدًا لأنّ هناك زيادة في طلبات الحصول على SQLite، ما يؤدي بدوره إلى حدوث مشاكل أخرى. يتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام
Configuration#setDefaultProcessName(processName)
.processName
هو اسم عملية مؤهَّل بالكامل يبدو مثلpackageName:processName
(مثلcom.example:remote
). - مجموعة من واجهات برمجة التطبيقات الجديدة:
RemoteWorkManager
وRemoteWorkContinuation
إلىenqueue
وcancel
وquery
لطلبات العمل لا تتضمّن واجهات برمجة التطبيقات هذه الصيغLiveData
لتجنُّب تعارض SQLite في عمليات متعدّدة. تتم إعادة توجيه جميع طلبات البيانات إلىenqueue
وcancel
وquery
إلى عملية تطبيقprimary
باستخدام AIDL وعرضListenableFuture
سلس. (aosp/1392657، aosp/1411210، aosp/1412215، aosp/1417713)
- يجب عادةً إعداد WorkManager في كل عملية تطبيق. وهذا ليس أمرًا جيدًا لأنّ هناك زيادة في طلبات الحصول على SQLite، ما يؤدي بدوره إلى حدوث مشاكل أخرى. يتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام
تغييرات واجهة برمجة التطبيقات
- يزيل WorkManager الآن
WorkRequest
المكتملة التي لا تتضمّن أيّ تبعيات غير مكتملة بشكل أكثر فاعلية. تم تغيير مدة التخزين المؤقت من7
يوم إلى1
يوم. (aosp/1419708)
إصلاح الأخطاء
- يُعدِّل WorkManager الآن المهام بشكل استباقي حتى تتم مزامنة مهام
WorkRequest
ومهامJobScheduler
عند بدءWorkManager
. (aosp/1412794، b/166292069)
الإصدار 2.5.0-alpha01
19 آب (أغسطس) 2020
تم تحرير androidx.work:work-*:2.5.0-alpha01
. يحتوي الإصدار 2.5.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- تغييرات على واجهات برمجة التطبيقات الداخلية التي تسمح لنا بتوفير أدوات أفضل باستخدام
WorkManager
من الآن فصاعدًا يُرجى متابعتنا للحصول على مزيد من المعلومات.
إصلاح الأخطاء
- معالجة
SecurityException
عند تتبُّع حالة الشبكة على بعض الأجهزة (aosp/1396969)
المساهمة الخارجية
- إصلاح مستندات
ArrayCreatingInputMerger
من قِبل Zac Sweers (github/43)
الإصدار 2.4.0
الإصدار 2.4.0
22 تموز (يوليو) 2020
تم تحرير androidx.work:work-*:2.4.0
. يحتوي الإصدار 2.4.0 على هذه المراجعات.
التغييرات الرئيسية منذ الإصدار 2.3.0
- أصبح جدولة العمليات في
WorkManager
أكثر كفاءة. في السابق، كانScheduler
قيد التنفيذ لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتأخّر وتم استيفاء قيوده. يتتبّع جدول التشغيل الجاري حاليًاWorkRequest
التي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequests. لا تلتزم أيضًا مهامScheduler
قيد التنفيذ بحدود الجدولة (ولكنها لا تزال مقيّدة بحجمExecutor
المستخدَم من قِبل WorkManager). ويعني ذلك أنّه يمكن للتطبيق الآن تنفيذ المزيد من طلبات العمل عندما يكون في المقدّمة. لإدارة تنفيذ العمل المتأخر في المقدّمة، يوفّر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>"
يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:
- طلبات العمل التي اكتملت في آخر 24 ساعة
- طلبات العمل التي يتم تنفيذها حاليًا
- طلبات العمل المجدوَلة (aosp/1235501)
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACE
الذي يشبهAPPEND
، ولكنّه يحلّ محل سلسلة تم إلغاء متطلباتها الأساسية أو تعذّر إكمالها. (b/134613984، aosp/1199640)يجب توفير إمكانية إضافة
RunnableScheduler
مخصّص لتتبُّع طلبات العمل التي يجب تنفيذها في المستقبل. ويستخدمه "جدول التشغيل" أثناء عملية التنفيذ. (aosp/1203944)إتاحة إضافة مصانع بشكل ديناميكي لتفويضها عند استخدام
DelegatingWorkerFactory
(b/156289105، aosp/1309745)مواءمة تتبُّع قيود
BATTERY_NOT_LOW
بشكلٍ أوثق مع المنصة (aosp/1312583)يستخدم جدول التشغيل أثناء العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويُعدّ ذلك مفيدًا لتقديم دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceType
المناسب عند استخدام واجهات برمجة تطبيقاتsetForegroundAsync()
(b/147873061، aosp/1215915) - تحديد أرقام تعريف JobScheduler التي يجب أن يستخدمها WorkManager عند استخدام واجهات برمجة تطبيقات JobService مباشرةً. aosp/1223567
- تمت إضافة قاعدة جديدة لفحص الأخطاء تضمن أنّ
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
- استخدام
إنّ المكالمات التي يتم إجراؤها إلى
setForegroundAsync()
والتي لا تكتمل قبل اكتمالListenableWorker
سيتم الآن الإشارة إليها من خلالIllegalStateException
فيListenableFuture
المعروض. (aosp/1262743)تم إصلاح خلل يمنع إيقاف
ForegroundService
بعد انقطاعWorker
في المقدّمة. (b/155579898، aosp/1302153)إصلاح خطأ يحاول فيه
WorkManager
تنفيذ نُسخ متعددة منWorker
مرتبطة بخدمة تعمل في المقدّمة (b/156310133، aosp/1309853)
الإصدار 2.4.0-rc01
24 حزيران (يونيو) 2020
تم تحرير androidx.work:work-*:2.4.0-rc01
. يحتوي الإصدار 2.4.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- يستخدم جدول التشغيل أثناء العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويُعدّ ذلك مفيدًا لتقديم دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
الإصدار 2.4.0-beta01
20 أيار (مايو) 2020
يتم إصدار androidx.work:work-gcm:2.4.0-beta01
وandroidx.work:work-runtime:2.4.0-beta01
وandroidx.work:work-runtime-ktx:2.4.0-beta01
وandroidx.work:work-rxjava2:2.4.0-beta01
وandroidx.work:work-testing:2.4.0-beta01
. يحتوي الإصدار 2.4.0-beta01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خلل يؤدي إلى عدم إيقاف
ForegroundService
بعد انقطاعWorker
في المقدّمة. (b/155579898، aosp/1302153) - إصلاح خطأ يحاول فيه
WorkManager
تنفيذ عدّة نُسخ منWorker
مرتبطة بخدمة تعمل في المقدّمة (b/156310133 وaosp/1309853) - إتاحة إضافة مصانع بشكل ديناميكي لتفويضها عند استخدام
DelegatingWorkerFactory
(b/156289105، aosp/1309745) - مواءمة تتبُّع قيود
BATTERY_NOT_LOW
بشكلٍ أوثق مع المنصة (aosp/1312583)
الإصدار 2.4.0-alpha03
29 نيسان (أبريل) 2020
تم تحرير androidx.work:work-*:2.4.0-alpha03
. يحتوي الإصدار 2.4.0-alpha03 على هذه المراجعات.
الميزات الجديدة
- يتيح WorkManager الآن استخدام RxJava 3. لاستخدام RxJava 3، يجب تضمين التبعية التالية:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - تمت إضافة قاعدة جديدة لفحص الأخطاء تضمن أنّ
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
تغييرات واجهة برمجة التطبيقات
- سيؤدي الآن استدعاء
setProgressAsync()
بعد انتهاء تنفيذListenableWorker
إلى إرسال إشارةException
عبرListenableFuture
. (aosp/1285494) - تم وضع علامة
final
علىWorkQuery.Builder
. (aosp/1275037) - تمت إعادة تسمية طرق المصنع
WorkQuery.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
أكثر كفاءة. في السابق، كان "جدول التشغيل" الجاري النظر فيه لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتأخّر وتم استيفاء قيوده. يتتبّع جدول التشغيل أثناء العمليةWorkRequest
التي قد يتم تنفيذها في المستقبل، بما في ذلكPeriodicWorkRequest
. لا يلتزم "جدول التشغيل" الجاري أيضًا بحدود الجدولة (ولكنه لا يزال مقتصرًا على حجمExecutor
الذي يستخدمه WorkManager). وهذا يعني أنّه يمكن للتطبيق الآن تنفيذ المزيد منWorkRequest
عندما يكون في المقدّمة. (aosp/1185778)تمت إضافة إمكانية طلب معلومات التشخيص من WorkManager باستخدام
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:- طلبات العمل التي اكتملت في آخر 24 ساعة
- طلبات العمل التي يتم تنفيذها حاليًا
- طلبات العمل المجدوَلة (aosp/1235501)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceType
المناسب عند استخدام واجهات برمجة تطبيقاتsetForegroundAsync()
(b/147873061، aosp/1215915) - تحديد أرقام تعريف
JobScheduler
التي يجب أن يستخدمهاWorkManager
عند استخدام واجهات برمجة تطبيقاتJobService
مباشرةً (aosp/1223567)
- استخدام
تغييرات واجهة برمجة التطبيقات
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACE
الذي يشبهAPPEND
، ولكنّه يحلّ محلّ سلسلة تم إلغاء المتطلبات الأساسية لها أو تعذّر إكمالها. (b/134613984، aosp/1199640)توفير إمكانية إضافة
RunnableScheduler
مخصّصة لتتبُّعWorkRequest
التي يجب تنفيذها في المستقبل يستخدمه "جدول التشغيل" أثناء عملية التنفيذ. (aosp/1203944)
إصلاح الأخطاء
- تم إيقاف
setProgress()
نهائيًا فيRxWorker
لأنّه كان يعرض في السابقSingle<Void>
وهو نوع غير ممكن. تمت إضافة واجهة برمجة تطبيقات جديدةsetCompletableProgress()
تعرضCompletable
بدلاً من ذلك، كما تمت إضافة قواعد Lint جديدة تساعد في نقل البيانات إلى واجهات برمجة التطبيقات الجديدة. (b/150080946، aosp/1242665)
الإصدار 2.3.4
الإصدار 2.3.4
18 آذار (مارس) 2020
تم تحرير androidx.work:work-*:2.3.4
. يحتوي الإصدار 2.3.4 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى تشغيل عمليات متعددة من
Worker
التي تستغرق وقتًا طويلاً، بعد تجاوز فترة التنفيذ التي تبلغ 10 دقائق. (aosp/1247484، b/150553353) - حلّ مشكلة lint في WorkManager
IssueRegistry
نشكرك @ZacSweers من Slack على مساهمتك. (aosp/1217923)
الإصدار 2.3.3
الإصدار 2.3.3
4 آذار (مارس) 2020
تم تحرير androidx.work:work-*:2.3.3
. يحتوي الإصدار 2.3.3 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى عدم إعادة جدولة
Worker
بشكل صحيح في حال انقطاعها. (b/150325687، aosp/1246571)
الإصدار 2.3.2
الإصدار 2.3.2
19 شباط (فبراير) 2020
تم تحرير androidx.work:work-*:2.3.2
. يحتوي الإصدار 2.3.2 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح مشكلة تجاوز WorkManager الحد الأقصى البالغ 100 وظيفة في JobScheduler في حالات نادرة (aosp/1226859، b/149092520)
- إصلاح مشكلة تعارض في ConstraintControllers (aosp/1220100)
- تم تحسين دورة حياة الخدمة التي تعمل في المقدّمة لإدارة "العمال" الذين يعملون لفترة طويلة. (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) - تمت إضافة تحذير أخطاء نحوية عند استخدام
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 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة قاعدة lint جديدة تمنع أخطاء المطوّرين بسبب التنفيذ غير الصحيح
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 جدولاً زمنيًا للعمل بشكل عادل عندما يقترب عدد
WorkRequest
المُدرَجة في "قائمة الانتظار" من الحدود القصوى لتحديد الجداول الزمنية. (aosp/1105766) - لا يُطلِق WorkManager
ListenableWorker#onStopped()
إلا إذا لم يكتمل العمل. (b/140055777) - تزيل أداة WorkManager الآن معلومات التقدّم عندما يتم إيقاف أحد العمال أو يصل إلى حالته النهائية. (aosp/1114572)
- تم الآن تحسين
toString()
فيData
ليصبح أكثر فائدة. (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()
. تمت أيضًا إضافة واجهة برمجة تطبيقاتsetProgress
-ingsetProgress
المقابلة فيCoroutineWorker
وsetProgress
فيRxWorker
التي تعرضSingle<Void>
.suspend
باستخدام واجهات برمجة التطبيقات الجديدة هذه، يمكن للعاملين نقل معلومات التقدّم عبرWorkInfo
التي تتضمّن واجهة برمجة تطبيقاتgetProgress
مقابلة. (b/79481554) - تتوفّر
Data
واجهة برمجة تطبيقاتcontainsKey()
يمكن استخدامها للتحقّق من أنّ بيانات الإدخال فيWorker
تحتوي على مفاتيح بالنوع المتوقّع. (b/117136838) - يمكن الآن تسلسل
Data
باستخدامData.toByteArray()
وData.fromByteArray()
. يُرجى العِلم أنّه ما مِن ضمانات متعلّقة بالإصدارات فيData
، لذا يجب عدم الاحتفاظ بها أو استخدامها للتواصل بين التطبيقات. ولا يمكن استخدامها إلا بين عمليات متعددة للتطبيق نفسه. - تمت إضافة إمكانية تحديد
InputMergerFactory
من خلالConfiguration.setInputMergerFactory
. (b/133273159)
تغييرات واجهة برمجة التطبيقات
- سيُلقي WorkManager مثيلًا من
IllegalStateException
إذا أرجعWorkerFactory
مثيلًا منListenableWorker
سبق أن تمّ استدعاؤه. (b/139554406) - تعديلات على المستندات حول إلغاء
ListenableFuture
وإعادة الاتصالonStopped()
فيListenableWorker
(b/138413671)
إصلاح الأخطاء
- يتجاهل "جدول التشغيل" الجاري الآن
WorkRequest
التي تتضمّن قيد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
لضبط مهلةPeriodicWorkRequest.Builder
أولية. b/111404867 - تمت إضافة إمكانية تفويض
WorkerFactory
مسجّلة واحدة أو أكثر باستخدامDelegatingWorkerFactory
. b/131435993 - تمت إضافة إمكانية تخصيص
Executor
المستخدَمة من قِبل WorkManager للقيام بجميع عمليات حفظ السجلات الداخلية من خلالConfiguration.Builder.setTaskExecutor
. - تمت إضافة إمكانية إنشاء فئات
Worker
وListenableWorker
قابلة للاختبار على مستوى الوحدة باستخدامTestWorkerBuilder
وTestListenableWorkerBuilder
في أثرwork-testing
.- يُرجى العِلم أنّ
work-testing
يستخدِم الآن Kotlin كتبعية ويضمّ عدة إضافات Kotlin تلقائيًا.
- يُرجى العِلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo
. b/127290461 - يمكن الآن لأنواع
Data
تخزين وعرض وحدات البايت ومصفوفات وحدات البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData
. - يعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه حلّ بعض مشاكل قاعدة البيانات.
الإصدار 2.1.0-rc01
27 حزيران (يونيو) 2019
تم تحرير androidx.work:work-*:2.1.0-rc01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى تعطُّل التطبيق عند تنفيذ المهام باستخدام
JobScheduler
أثناء إجراء عملية احتياطية b/135858602.
الإصدار 2.1.0-beta02
20 حزيران (يونيو) 2019
تم تحرير androidx.work:work-*:2.1.0-beta02
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يستخدم
TestListenableWorkerBuilder
الآنWorkerFactory
الصحيح عند إنشاء نُسخ منListenableWorker
. b/135275844 - تم إصلاح خطأ كان يتسبب في حدوث انحرافات في فترات تنفيذ
WorkRequest
بسبب إنهاء العملية. b/135272196
الإصدار 2.1.0-beta01
13 حزيران (يونيو) 2019
تم تحرير androidx.work:work-*:2.1.0-beta01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه حلّ بعض مشاكل قاعدة البيانات. - تمت إزالة بعض عمليات إدخال/إخراج القرص في عملية بدء التشغيل على سلسلة التعليمات الرئيسية.
- تم إصلاح مشكلة احتمالية حدوث "توقّف عمليات متعددة في انتظار الحصول على الموارد نفسها" في تتبُّع القيود. b/134361006
- تم إلغاء مهام غير صالحة مُسبَقًا منسوبة إلى WorkManager. b/134058261
- تمت إضافة بعض طلبات الحظر إلى واجهات برمجة التطبيقات JobScheduler للأجهزة التي تُظهر سلوكًا غير مرغوب فيه.
الإصدار 2.1.0-alpha03
5 حزيران (يونيو) 2019
تم تحرير androidx.work:*:2.1.0-alpha03
.
إصلاح الأخطاء
- مستندات محسّنة لتطبيقات
PeriodicWorkRequest
- يستخدم
WorkManagerTestInitHelper
الآن أداة تنفيذ الخلفية الصحيحة للاختبارات. - إصلاحات لمشاكل SQLite عند التعامل مع المعاملات الكبيرة على بعض الأجهزة (b/130182503)
- أصبحت الآن تبعيات WorkManager أكثر دقة. (b/133169148).
- حلّ المشاكل المتعلّقة بمصنعي الأجهزة الأصليين في تنفيذ
JobScheduler
عند جدولة المهام باستخدام WorkManager - تحسينات في أداة جدولة AlarmManager المتعلّقة بمدّة خدمة التطبيقات التي كانت تتسبّب في حدوث أعطال نادرة في السابق (b/133313734)
الإصدار 2.1.0-alpha02
16 أيار (مايو) 2019
تم طرح الإصدار WorkManager 2.1.0-alpha02. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة.
تغييرات واجهة برمجة التطبيقات
تتيح
PeriodicWorkRequest
الآن تأخيرات الدفع الأولية. يمكنك استخدامsetInitialDelay
فيPeriodicWorkRequest.Builder
لضبط مهلةPeriodicWorkRequest.Builder
أولية. b/111404867تمت إضافة إمكانية تفويض
WorkerFactory
مسجّلة واحدة أو أكثر باستخدامDelegatingWorkerFactory
. b/131435993تمت إضافة إمكانية تخصيص
Executor
المستخدَمة من قِبل WorkManager للقيام بجميع عمليات حفظ السجلات الداخلية من خلالConfiguration.Builder.setTaskExecutor
.تم تحسين المستندات حول
WorkRequest.keepResultsForAtLeast
(b/130638001) وعملية الإعداد عند الطلب وPeriodicWorkRequest.Builder
(b/131711394).
الإصدار 2.1.0-alpha01
24 نيسان (أبريل) 2019
تم طرح الإصدار WorkManager 2.1.0-alpha01. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة. يُرجى العِلم أنّه اعتبارًا من هذا الإصدار، ستتوفّر ميزات جديدة لن يتم نقلها إلى الإصدار 1.x. ننصحك بالتبديل إلى الإصدار 2.x.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عملية إعداد عند الطلب لخدمة WorkManager، والتي ستنشئ WorkManager
فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
- أوقِف أداة الإعداد التلقائي.
- نفِّذ
Configuration.Provider
على عنصرApplication
المخصّص. - غيِّر كل الإشارات إلى
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
. وكجزء من هذا التغيير، تم إيقافWorkManager.getInstance()
نهائيًا. من الأفضل دائمًا الاتصال بالشركة التي تم شراء جهازWorkManager.getInstance(Context)
البديل منها، حتى إذا لم تكن بصدد تنفيذ عملية إعداد الجهاز على الطلب.
- تمت إضافة إمكانية إنشاء
Worker
وListenableWorker
فئتَين قابلتَين للاختبار على مستوى الوحدة باستخدامTestWorkerBuilder
وTestListenableWorkerBuilder
في العنصرwork-testing
.- يُرجى العِلم أنّ
work-testing
يستخدِم الآن Kotlin كتبعية، ولكنه أيضًا يتضمّن عدة إضافات Kotlin تلقائيًا.
- يُرجى العِلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo
. b/127290461 - يمكن الآن لأنواع
Data
تخزين وعرض وحدات البايت ومصفوفات وحدات البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData
. - تم إيقاف
CoroutineWorker.coroutineContext
نهائيًا. تم إدخال هذا الحقل بشكلٍ غير صحيح كنوعCoroutineDispatcher
، ومن المفترض ألا تحتاج إليه بعد الآن لأنّه يمكنك الانتقال إلى coroutineContext المطلوب بنفسك في نص الدالة المعلّقة. - تم الآن
إضافة تعليقات توضيحية إلى
RxWorker.createWork()
وRxWorker.getBackgroundScheduler()
باستخدام أنواع الإرجاع@NonNull
.
الإصدار 2.0.1
الإصدار 2.0.1
9 نيسان (أبريل) 2019
تم طرح الإصدار 2.0.1 من WorkManager. هذا الإصدار مطابق لإصدار 2.0.1-rc01.
الإصدار 2.0.1-rc01
3 نيسان (أبريل) 2019
تم إصدار الإصدار WorkManager 2.0.1-rc01. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء. بالنسبة إلى مستخدمي الإصدار 1.x القديم، تظهر بعض هذه التغييرات أيضًا في الإصدار 1.0.1-rc01.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
- تم إصلاح عطل في حالة استخدام متطرفة بسبب عدم تنظيف تتبُّع القيود في واجهات برمجة تطبيقات JobScheduler السابقة. b/129226383
- تم إصلاح
StackOverflowError
في ما يتعلّق بالسلاسل الطويلة من الأعمال. b/129091233 - تم تعديل مستندات
PeriodicWorkRequest
للإشارة إلى أنّ وقت المرونة غير متوافق مع الإصدار 23 من واجهة برمجة التطبيقات. - تم إصلاح بعض الروابط المعطّلة في مستندات Kotlin.
الإصدار 2.0.0
الإصدار 2.0.0
20 آذار (مارس) 2019
تم طرح الإصدار 2.0.0 من WorkManager. هذا الإصدار مطابق للإصدار 2.0.0-rc01 وهو إصدار AndroidX من الإصدار 1.0.0 الثابت مع تبعيات AndroidX. ننصحك باستهداف هذا الإصدار بدلاً من الإصدارات القديمة من 1.x. سيستهدف كل التطوير النشط الإصدار 2.x ولن يتلقّى الإصدار 1.x سوى إصلاحات الأخطاء الملحّة لفترة محدودة.
الإصدار 2.0.0-rc01
7 آذار (مارس) 2019
تم إصدار الإصدار WorkManager 2.0.0-rc01. هذا الإصدار مطابق للإصدار الثابت 1.0.0 ولكنه يحتوي على تبعيات AndroidX. بعد أن يصبح الإصدار 2.0.0 ثابتًا، يجب تضمين هذا الإصدار ولن تتلقّى الإصدارات القديمة من 1.x سوى بعض إصلاحات الأخطاء الحرجة. وستستهدف جميع عمليات التطوير النشطة الإصدار 2.x.
التبعيات التي تم إنشاؤها قبل AndroidX
المستندات المرجعية: Java
رائع
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
الإصدار 1.0.1
الإصدار 1.0.1
9 نيسان (أبريل) 2019
تم طرح الإصدار 1.0.1 من WorkManager. هذا الإصدار مطابق لإصدار 1.0.1-rc01.
يُرجى العِلم أنّنا ننصح بشدّة المستخدمين بالتحديث إلى الإصدار 2.x من WorkManager، لأنّه لن يكون هناك سوى عدد قليل جدًا من التحديثات لفرع الإصدار 1.x من الآن فصاعدًا. لن يتم أيضًا طرح واجهات برمجة التطبيقات الجديدة لإصدار المكتبة 1.x.
الإصدار 1.0.1-rc01
2 نيسان (أبريل) 2019
تم إصدار الإصدار WorkManager 1.0.1-rc01. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
- تم إصلاح عطل في حالة استخدام متطرفة بسبب عدم تنظيف تتبُّع القيود في واجهات برمجة تطبيقات JobScheduler السابقة. b/129226383
- تم إصلاح
StackOverflowError
في ما يتعلّق بمعالجة سلاسل العمل الطويلة. b/129091233
الإصدار 1.0.0
الإصدار 1.0.0
5 آذار (مارس) 2019
هذا هو الإصدار الثابت 1.0.0 من WorkManager. هذا الإصدار من WorkManager هو مطابق للإصدار 1.0.0-rc02.
الإصدار 1.0.0-rc02
21 شباط (فبراير) 2019
هذا هو الإصدار الثاني من الإصدار التجريبي للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحَين للأخطاء.
إصلاح الأخطاء
يتم الآن جدولة عمليات
Worker
بشكل صحيح بعد تعطُّل التطبيق. b/124546316إنّ
Worker
التي تُظهرException
غير محدَّد يتم تمييزها الآن بشكل صحيح على أنّهاFAILED
ولم تعُد تؤدي إلى تعطُّل عملية التطبيق.
الإصدار 1.0.0-rc01
14 شباط (فبراير) 2019
هذا إصدار مرشح للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحًا واحدًا للخطأ.
إصلاح الأخطاء
- يراعي التنفيذ المستنِد إلى AlarmManager الآن بشكل صحيح
flex
فترات الانتظار لطلبات 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
- تم إصلاح مشكلة كانت تؤدي إلى تسرُّب عمليات قفل التنشيط في WorkManager عند استخدام التنفيذ المستنِد إلى AlarmManager.
الإصدار 1.0.0-beta03
25 كانون الثاني (يناير) 2019
يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- لقد أجرينا تحديثًا
1.0.0-beta02
كان يتسبب في عدم تنفيذ العمل بشكل صحيح في بعض الحالات. b/123211993 - تم إصلاح مشكلة عدم التزام العمل بتوقيت الانتظار بشكل صحيح. b/122881597
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى أو) أو إصدارات أقدم. هذا الإجراء هو استمرار لعملية الإصلاح التي تم إجراؤها في1.0.0-beta02
. b/121345393 - أضفنا
exported=false
لبعض المكوّنات في البيان التي كانت تفتقر إلى هذا التعليق التوضيحي. - تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في مستندات مستوى الحزمة.
الإصدار 1.0.0-beta02
15 كانون الثاني (يناير) 2019
يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة طارئة يمكن فيها تنفيذ المهام الدورية أكثر من مرة في كل فاصل زمني على الأجهزة التي تعمل بنظام التشغيل Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات). b/121998363
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو إصدارات أقدم. b/121345393 - تم إصلاح تنفيذ العمل بشكلٍ خاطئ عند عدم استيفاء القيود على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو إصدارًا أقدم. b/122578012
- تحسين معالجة إكمال العمل ليكون أسرع في بعض الحالات القصوى b/122358129
- تم إجراء تغيير لمعالجة حالات السباق المحتمَلة بين عمليات متعددة
من
LiveData
يستخدمها WorkManager. - تم نقل استخدام الإصدار
Room
من التبعية1.1.1
بدلاً من الإصدار1.1.1-rc01
، لأنّ هذين الإصدارين متطابقان. b/122578011
الإصدار 1.0.0-beta01
19 كانون الأول (ديسمبر) 2018
لا يحتوي هذا الإصدار على أي تغييرات في واجهة برمجة التطبيقات، ومن المفترض أن تظل واجهة برمجة التطبيقات في WorkManager ثابتة من الآن فصاعدًا إلى أن يصل الإصدار التالي ما لم تحدث مشكلة خطيرة. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- لن يتمّ تشغيل حسابات الأطفال التي تم إلغاؤها سابقًا والتي تمّ إكمال عمل الوالدَين فيها بنجاح. b/120811767
- فئات التسجيل التي تم إعدادها بشكل صحيح (تظهر بشكل أساسي أثناء الاختبارات)
الإصدار 1.0.0-alpha13
12 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار تغييرًا بسيطًا في واجهة برمجة التطبيقات سيكون مفيدًا لبعض مستخدمي Kotlin.
تغييرات واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
لتكون فئة داخلية منListenableWorker
. ويمنع ذلك تعارضات إعادة التشكيل مع فئةResult
في المستوى الأعلى من Kotlin. هذا تغيير جذري في واجهة برمجة التطبيقات. b/120564418
تغييرات أساسية في واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
لتكون فئة داخلية منListenableWorker
.
الإصدار 1.0.0-alpha12
5 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار بعض التغييرات الأساسية في واجهة برمجة التطبيقات، يُرجى الاطّلاع على قسم التغييرات الأساسية في واجهة برمجة التطبيقات أدناه. من المرجّح أن يتم إصدار هذا الإصدار كأول إصدار تجريبي. يحتوي alpha12
أيضًا على تعديلات شاملة على المستندات.
تغييرات واجهة برمجة التطبيقات
- يقدّم العنصر الجديد
work-rxjava2
RxWorker
. هذاListenableWorker
يتوقعSingle<Payload>
. - تمّت إزالة التوافق مع Firebase JobDispatcher بسبب الإيقاف النهائي المُرتقب له. وهذا يعني أنّه لن يتم تعديل العنصر
work-firebase
بعد الآن مع بدء استخدام الإصدار التجريبي. وسننظر في إضافة بديل في المستقبل. - تم دمج
Payload
فيResult
. أصبحتResult
الآن "فئة مختومة" تتضمّن ثلاثة عمليات تنفيذ محدّدة يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. تظهر الآنListenableFuture
بقيمةResult
بدلاً منPayload
. لا تتضمّنWorker
طرق الحصول على البيانات وضبطها للإخراجData
. هذا تغيير جذري. - تمت إضافة
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
وأنواعها لتوفير دعم أفضل لعناوين URL للمحتوى التي يتم تشغيلها ببطء. 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
الحالية أكثر وضوحًا. هذا تغيير جذري.
إصلاح الأخطاء
- أصبحت عمليات التنفيذ التي تم إجراؤها قبل الإصدار 6 من نظام التشغيل Android أكثر موثوقية في استرداد العملية بعد تعذُّر تنفيذ مهمة كانت قيد التنفيذ.
- يتم تتبُّع
LiveData
الذي يتم رصده من خلالobserveForever
من خلال WorkManager. هذه ميزة تم نقلها من إصدار سابق لإصلاح مكتبة Room. b/74477406 - تُعرِض
Data.Builder.build()
الآن استثناءً إذا تجاوز العنصر التسلسلي الحد الأقصى لحجمه. في السابق، كان هذا يحدث فقط في سلسلة مهام في الخلفية لا يمكنك التعامل معها بشكل صحيح. - التمييز بشكل أكبر بين العمل المتوقف عن العمل والملغى: سيعرض
getWorkInfoById()
WorkInfo
معCANCELLED
State
خلالListenableWorker.onStopped()
. - التعامل مع
null
Result
كأخطاء فيListenableWorker
b/120362353 - حلّ افتراضي لأجهزة Shield Tablets التي تعمل بواجهة برمجة التطبيقات 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()
لإضافةOneTimeWorkRequest
فريدة إلى "قائمة المحتوى التالي" بدون الحاجة إلى إنشاءWorkContinuation
. - تُعرِض الآن جميع الصيغ لطريقتَي
enqueue
وcancel
فيWorkManager
نوعOperation
جديدًا. هذا تغيير جذري. - لم تعُد جميع الصيغ من
enqueue
تقبل متغيرات الوسائط فيWorkRequest
. هذا تغيير جذري. استخدِم "المجموعات" بدلاً من ذلك. يمكنك استخدامArrays.asList()
لتعديل الرمز الحالي. لقد فعلنا ذلك لتقليل مساحة عرض واجهة برمجة التطبيقات وعدد الطرق. - ستؤدي الآن محاولة
initialize
WorkManager
أكثر من مرة واحدة لكل عملية إلى ظهورIllegalStateException
. هذا تغيير جذري.
إصلاح الأخطاء
- تستخدم
WorkRequest.Builder
في العنصرwork-runtime-ktx
الآنListenableWorker
. إصلاحات b/117666259 - تأكَّد من أنّ وقت التشغيل التالي لـ "
PeriodicWork
" سيكون في المستقبل. إصلاحات b/118204399 - أزِل عمليات إدخال/إخراج القرص المحتمَلة عند استخدام WorkManager عند بدء تشغيل التطبيق. الإصلاحات b/117796731
- حلّ مشكلة تعارض في
WorkConstraintsTracker
إصلاحات android-workmanager/issues/56
تغييرات أساسية في واجهة برمجة التطبيقات
- تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمت إعادة تسمية جميع صِيغ طريقةgetStatus
المقابلة لتصبح صِيغgetWorkInfo
المقابلة. - لم تعُد
ListenableWorker.onStopped()
تقبل وسيطة منطقية تمثّل ما إذا تم إلغاءWorkRequest
. لم تعُدWorkManager
تُجري هذا التمييز. - تمت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. - لم تعُد وظائف الإعداد في
Constraints
جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
الصفيفان اللذان تم عرضهما سابقًا والآن، تعرض هذه الطرق مجموعات.- تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. - لم يعُد مُنشئ
WorkStatus
جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. - تُعرِض الآن جميع الصيغ لطريقتَي
enqueue
وcancel
فيWorkManager
نوعًا جديدًا منOperation
. - لم تعُد جميع الصيغ من
enqueue
تقبل متغيرات الوسائط فيWorkRequest
. - ستؤدي محاولة
initialize
WorkManager
أكثر من مرة واحدة لكل عملية إلى ظهورIllegalStateException
.
الإصدار 1.0.0-alpha10
11 تشرين الأول (أكتوبر) 2018
يتيح هذا الإصدار العمل غير المتزامن الذي يتحكّم فيه المطوّر. تم إجراء تغييرات جذرية على واجهة برمجة التطبيقات في هذا الإصدار، يُرجى الاطّلاع على قسم التغييرات الجذرية على واجهة برمجة التطبيقات أدناه.
نتوقّع أن يدخل WorkManager المراحل النهائية من الفترة التجريبية. نتوقع أن تكون واجهة برمجة التطبيقات مستقرة في الإصدار التجريبي، لذا يُرجى تخصيص بعض الوقت لإرسال ملاحظاتك في أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة جميع طرق وفئَات
deprecated
السابقة، لا سيما طريقة الإنشاء التلقائيةWorker
. هذا تغيير جذري في واجهة برمجة التطبيقات. - تمت إعادة تسمية
NonBlockingWorker
إلىListenableWorker
، وهي الآن فئة عامة غير مخفية وجاهزة للاستخدام.- توفّر فئة
ListenableWorker
إمكانية الوصول إلى طريقة مجردة واحدة، وهيListenableFuture<Payload> onStartWork()
، والتي يتمّ استدعاؤها في سلسلة التعليمات الرئيسية. يعود الأمر إليك في بدء العمل ومعالجته بشكل غير متزامن. عند الانتهاء، عليك تعديلListenableFuture
وفقًا لذلك. يتم توفير عمليات التنفيذ المرجعية لعناصرListenableFuture
في حزمةFutures
فيalpha02
(راجِع قسمWorkManager
أدناه). - يمتد
Worker
إلىListenableWorker
ولا يزال يعمل كالمعتاد، باستخدام طريقةResult doWork()
مجردة. - تم ترتيب بعض الطرق والأعضاء بشكل عشوائي من
Worker
إلىListenableWorker
. - سنوفّر قريبًا عمليات تنفيذ مرجعية لتطبيقات
ListenableWorker
التي تستخدم وظائف التشغيل المتعدّد المتزامن في Kotlin (بعد طرح الإصدارات الثابتة) وRxJava2.
- توفّر فئة
- تم دمج الواجهة
WorkerFactory
وطريقة التنفيذ المحدّدةDefaultWorkerFactory
في فئة مجردة تُسمىWorkerFactory
. يضمن التنفيذ استدعاء السلوك التلقائي المستنِد إلى الانعكاس كمحاولة أخيرة لأيّ نُسخ منWorkerFactory
أنشأها المستخدم. هذا تغيير جذري. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
وجميع الطرق ذات الصلة. تمت إضافةListenableFuture<Void>
كنوع الإرجاع للعديد من الطرق في واجهة برمجة التطبيقات. هذا تغيير جذري في واجهة برمجة التطبيقات.- يمكنك الآن الحصول على البيانات ومراقبتها بشكل متزامن باستخدام
ListenableFuture
. على سبيل المثال، كانWorkManager.enqueue()
يعرضvoid
، ولكنّه يعرض الآنListenableFuture<Void>
. يمكنك استدعاءListenableFuture.addListener(Runnable, Executor)
أوListenableFuture.get()
لتشغيل الرمز البرمجي بعد اكتمال العملية. - تجدر الإشارة إلى أنّ هذه العلامات
ListenableFuture
لا تُعلمك ما إذا كانت العملية ناجحة أو تعذّر إكمالها، بل تُعلمك فقط بأنّها قد اكتملت. سيظل عليك ربط طرق WorkManager لمعرفة هذه المعلومات. - نتجاهل طلبات
cancel()
على هذه العناصر، لأنّها مربكة ويصعب تحديد سببها (هل تلغي العملية أم العمل الناتج عنها؟). يُعدّ ذلك من ضمن أحكام عقدFuture
. - للحفاظ على التكافؤ مع طرق
getStatus*
المتزامنة، قدّمنا صيغًاListenableFuture
، وأعدت تسمية الطرق الحالية التي كانت تعرضLiveData
لتتضمّن "LiveData" صراحةً كجزء من الاسم (على سبيل المثال،getStatusesByIdLiveData(UUID)
). هذا تغيير جذري في واجهة برمجة التطبيقات.
- يمكنك الآن الحصول على البيانات ومراقبتها بشكل متزامن باستخدام
إصلاح الأخطاء
- تم إصلاح المشكلة المعروفة من الإصدار alpha09 المتعلّقة بملفات
androidx-annotations.pro
المكرّرة. يمكنك إزالة الحلّ البديل من ملاحظات الإصدار السابقة من خلال حذفexclude 'META-INF/proguard/androidx-annotations.pro'
من ملف gradle. - تمت إضافة إعدادات Proguard للحفاظ على باني
Worker
الجديد. b/116296569 - إصلاح مشكلة
NullPointerException
محتملة في حالة تسابق حيث تمREPLACE
العمل b/116253486 وb/116677275 - يقبل
WorkContinuation.combine()
الآنWorkContinuation
واحدًا أو أكثر بدلاً من اثنين أو أكثر. b/117266752
تغييرات أساسية في واجهة برمجة التطبيقات
- تمّت إزالة جميع طرق وفئَات
deprecated
السابقة، لا سيما طريقة الإنشاء التلقائيةWorker
. - تم دمج الواجهة
WorkerFactory
وطريقة التنفيذ المحدّدةDefaultWorkerFactory
في فئة مجردة تُسمىWorkerFactory
. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
. - تعرض الآن طرق
WorkManager.getStatus*()
ListenableFuture
.WorkManager.getStatus*LiveData()
تُرجِعLiveData
.
الإصدار 1.0.0-alpha09
19 أيلول (سبتمبر) 2018
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف يتضمّن مسارًا مستقلاً عن نظام التشغيل "META-INF/proguard/androidx-annotations.pro"، يُرجى إدراج ما يلي في ملف gradle كحلّ مؤقت إلى أن نحلّ المشكلة في الإصدار alpha10:
رائع
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة حلّ آخر كان مطلوبًا لخطأ "100 وظيفة". b/115560696
- تمّت إضافة بعض الإصلاحات لأخطاء قيود المفاتيح الأجنبية بسبب حالات السباق. b/114705286
ConstraintTrackingWorker.onStopped(boolean)
المفوَّضة تُجري مكالمات إلىWorker
الأساسية. b/114125093- فرض الحد الأدنى الصحيح لتأخير الانتظار في Firebase JobDispatcher b/113304626
- تضمن ميزة "المعالجة المتعدّدة للخيوط" الأداء الداخلي للمكتبة.
- يجب تصحيح مشكلة محتملة في إزالة تكرار
LiveData
داخليًا.
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء نُسخ
Worker
الخاصة بك أثناء التشغيل من خلال تحديدWorkerFactory
كجزء منWorkManager.Configuration
. مصنع النسخ الاحتياطية هوDefaultWorkerFactory
، وهو يتطابق مع سلوك الإصدارات السابقة من WorkManager.- تم الآن وضع علامة على علامتَي الإنشاء التلقائيتَين لـ
Worker
وNonBlockingWorker
بأنّهما متوقّفتاَن نهائيًا. يُرجى استخدام طريقة الإنشاء الجديدة (Worker(Context, WorkerParameters)
) واستدعاءsuper(Context, WorkerParameters)
، وستزيل الإصدارات المستقبلية من WorkManager طريقة الإنشاء التلقائية.
- تم الآن وضع علامة على علامتَي الإنشاء التلقائيتَين لـ
- لقد بدأنا في استخدام العنصر
ListenableFuture
الجديد داخليًا (خالٍ من تبعيات Guava). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيتيح هذا التغيير إزالة إخفاءNonBlockingWorker
في نهاية المطاف. - إضافة إمكانية بدء عمل موقّت في
TestDriver
من خلالTestDriver.setInitialDelayMet(UUID)
وTestDriver.setPeriodDelayMet(UUID)
b/113360060
التغييرات التي قد تؤدي إلى حدوث عطل
- تم إيقاف وظيفتَي الإنشاء التلقائيتَين
Worker
وNonBlockingWorker
نهائيًا. يُرجى نقل البيانات إلى المنشئ الجديد في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية المُنشئ التلقائي.
الإصدار 1.0.0-alpha08
27 آب (أغسطس) 2018
إصلاح الأخطاء
- مكونات WorkManager التي تم تصنيفها صراحةً على أنّها غير مُدركة لميزة "التشغيل المباشر" حتى لا يتم تشغيلها أثناء التشغيل المباشر وفي المستقبل، سنوفّر إصدارًا من WorkManager يراعي عملية التشغيل المباشر. b/112665532
- تم إصلاح مشكلة عدم تنفيذ العمل الذي تم إعادة المحاولة فيه. b/112604021
- تم إصلاح عدم تنفيذ العمل الدوري بشكل متكرّر (مرتبط بالمشكلة أعلاه). b/112859683
- الالتزام بسياسات التراجع عندما تكون عملية التطبيق قيد التشغيل
- تم تصحيح رسائل الاستثناء في
Data
للإشارة إلى أنّ الحدّ الأقصى هو 10 كيلوبايت. - تم خفض الحد الأقصى للقيمة
Configuration.setMaxSchedulerLimit(int)
إلى 50 لمعالجة بعض حالات التأخير في إكمال معالجةJobScheduler
. b/112817355
الإصدار 1.0.0-alpha07
16 آب (أغسطس) 2018
إصلاح الأخطاء
- تم إصلاح طلب بحث SQL محتمل يتضمّن حدودًا سلبية يمكن أن يعرض عددًا غير محدود من النتائج.
- عند الانتهاء من تنفيذ عمل معيّن، يتم الآن إلغاء جميع النُسخ التي في انتظار المراجعة من هذا العمل في أدوات جدولة أخرى بشكل صحيح. وقد أدّى ذلك إلى تجاوز الحدّ الأقصى المسموح به وهو
JobScheduler
مهمة. b/111569265 - تم حلّ
ConcurrentModificationException
فيConstraintTracker
. b/112272753 - تم تغيير التعليقات التوضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229
تغييرات واجهة برمجة التطبيقات
- يمتدّ الآن
Worker
إلى فئة جديدة، وهيNonBlockingWorker
. ولن يؤثّر ذلك في أي استخدام حالي. في المستقبل، سيصبحNonBlockingWorker
كيانًا متوافقًا بالكامل مع حلول سلاسل المحادثات المخصّصة. - تم تغيير التعليقات التوضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229 - إضافات Kotlin: تم إيقاف
Map.toWorkData()
نهائيًا وتمت إضافةworkDataOf(vararg Pair<String, Any?>)
من المستوى الأعلى لتكون أكثر اتساقًا مع واجهات برمجة التطبيقات الحالية.
الإصدار 1.0.0-alpha06
1 آب (أغسطس) 2018
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل b/111801342
- إصلاح خطأ كان يتسبب في عدم تشغيل
PeriodicWork
وفقًا للجدول الزمني في وضع "الاستراحة الذكية" b/111469837 - إصلاح مشكلة تعارض في المعالجة عند تتبُّع القيود التي تؤدي إلى تعطُّل
WorkManager
googlecodelabs/android-workmanager/issues/56 - أنشئ
WorkRequest
فريدة عند استخدامWorkRequest.Builder#build()
. b/111408337 - لا تفعِّل استخدام
RescheduleReceiver
إلا عندما تكون هناكWorkRequest
تحتاج إليه. b/111765853
الإصدار 1.0.0-alpha05
24 تموز (يوليو) 2018
تغييرات واجهة برمجة التطبيقات
- تم الآن إضافة تعليق توضيحي إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. بدلاً من ذلك، إذا لم يتمّ إعداد العنصر الفردي بشكلٍ صحيح في حالات الإعداد اليدوي، ستُعرِض الطريقةIllegalStateException
. هذا تغيير أساسي في واجهة برمجة التطبيقات. - تمت إضافة واجهة برمجة تطبيقات جديدة،
Configuration.Builder.setMinimumLoggingLevel(int)
، يمكنها التحكّم في مستوى تفصيل WorkManager. يسجِّل WorkManager الإصدارLog.INFO
والإصدارات الأحدث تلقائيًا. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية بعد الآن (يكونnull
بشكل ضمني). هذا تغيير جذري في واجهة برمجة التطبيقات. - تم وضع علامة
@hide
على بعض الطرق التي لا يُسمح باستخدامها إلا للاستخدام الداخلي. ويشمل ذلكConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
. هذا تغيير جذري في واجهة برمجة التطبيقات.
إصلاح الأخطاء
- لم يعُد WorkManager ينفِّذ المهام أثناء الحالات المعروفة للنسخ الاحتياطي التلقائي. وقد يؤدي ذلك إلى حدوث عطل. b/110564377
- تم إصلاح مشكلة تحديد موعد مزدوج للإعلانات عند استخدام
JobScheduler
.PeriodicWorkRequest
b/110798652 - تم إصلاح مشكلة عدم تنفيذ
PeriodicWorkRequest
بشكل صحيح بعد وضع السكون في الجهاز. b/111469837 - تم إصلاح مشكلة تأخيرات البداية عند استخدام Firebase JobDispatcher. b/111141023
- تم إصلاح بعض المشاكل المحتملة في التوقيت وشروط السباق.
- تمّت إزالة
BroadcastReceiver
بشكل صحيح والتي لم تعُد مطلوبة. - تحسين أداء إعادة الجدولة عند إعادة تشغيل التطبيقات بعد إغلاقها بشكلٍ قسري
- السماح باستدعاء
TestScheduler.setAllConstraintsMet(UUID)
قبل أو بعد إضافةWorkRequest
المحدّد إلى "قائمة الانتظار" b/111238024
التغييرات التي قد تؤدي إلى حدوث عطل
- تم الآن إضافة تعليق توضيحي إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية بعد الآن (يكونnull
بشكل ضمني). - تم وضع علامة
@hide
على بعض الطرق التي لا يُسمح باستخدامها إلا للاستخدام الداخلي. ويشمل ذلكConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
.
الإصدار 1.0.0-alpha04
26 حزيران (يونيو) 2018
إصلاح الأخطاء
- تتم الآن إعادة جدولة
PeriodicWorkRequest
بشكل صحيح عند استخدام التنفيذ المستنِد إلىAlarmManager
. - تم إصلاح خطأ ANR محتمل عند إعادة جدولة جميع وحدات العمل بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
- تمت إضافة تعليقات توضيحية حول قابلية العدم إلى واجهات برمجة تطبيقات WorkManager المختلفة. b/110344065
- تسجيل الاستثناءات التي لم يتم رصدها والتي تحدث أثناء تنفيذ Worker b/109900862
- السماح بعمليات نقل البيانات المدمرة في حال قررت الرجوع إلى إصدار أقدم من WorkManager b/74633270
- تم إصلاح مشكلة تعطُّل عملية نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا لا تحدث إلا إذا استخدمت تنسيق العلامة الضمنية نفسه بنفسك.
الإصدار 1.0.0-alpha03
19 حزيران (يونيو) 2018
إصلاح الأخطاء
تم إصلاح خطأ تداخل في التنفيذ المستنِد إلى
AlarmManager
. b/80346526.تم إصلاح مهام النسخ المكرّر عند استخدام
JobScheduler
بعد إعادة تشغيل الجهاز.أصبحت المهام التي تستخدم عوامل تشغيل معرّفات الموارد المنتظمة (URI) للمحتوى محفوظة بعد عمليات إعادة التشغيل. b/80234744
تعديلات على المستندات: b/109827628 وb/109758949 وb/80230748
تم إصلاح عطل يحدث عند إعادة إدراج
WorkRequest
في "قائمة المحتوى التالي". b/109572353.تم إصلاح التحذيرات الصادرة عن "مجمّع لغة Kotlin" عند استخدام التبعية
work-runtime-ktx
.يستخدم WorkManager الآن الإصدار
1.1.1-rc1
منRoom
.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
getStatusesSync()
، وهو الإصدار المتزامن منWorkContinuation.getStatuses()
. - يمكن لتطبيق
Worker
التمييز بين الإلغاء الذي يبدأه المستخدم والتوقف المؤقت الذي تطلبه نظام التشغيل. تعرض دالةWorker.isStopped()
القيمةtrue
إذا تم طلب أي نوع من عمليات الإيقاف. تعرِضWorker.isCancelled()
القيمةtrue
عندما يتم إلغاء العمل صراحةً. b/79632247 - إضافة إمكانية استخدام JobParameters#getNetwork() في الإصدار 28 من واجهة برمجة التطبيقات ويتم عرض هذا المحتوى من خلال
Worker.getNetwork()
. - تمت إضافة
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
حتى تتمكّن من فرض عدد المهام التي يمكن إرسالها إلىJobScheduler
أوAlarmManager
. يساعد ذلك في منعWorkManager
من أخذ كل خاناتJobScheduler
المتاحة لديك. - تمت إضافة
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
التي تساعد في تحديد نطاق معرّفات مهامJobScheduler
الآمنة لاستخدامها فيWorkManager
. b/79996760 - تعرِض
Worker.getRunAttemptCount()
عدد عمليات التشغيل الحالية لـWorker
معيّن. b/79716516 - تتيح لك خدمة
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
إضافةPeriodicWorkRequest
فريدة إلى "قائمة الانتظار". b/79600647 - يؤدي
WorkManager.cancelAllWork()
إلى إلغاء جميعWorker
. يمكن للمكتبات التي تعتمد علىWorkManager
الاستعلام عن آخر مرة تم فيها استدعاء هذه الطريقة باستخدامWorkManager.getLastCancelAllTimeMillis()
لتنظيف إضافي للحالة الداخلية. - تمت إضافة
WorkManager.pruneWork()
لإزالة المهام المكتملة من قاعدة البيانات الداخلية. b/79950952، b/109710758
التغييرات في السلوك
- تمت إضافة علامة ضمنية لجميع
WorkRequest
، وهي اسم الفئة المؤهَّلة بالكامل للعنصرWorker
. يتيح ذلك إمكانية إزالةWorkRequest
بدونtag
أو عندما لا يكونid
متاحًا. b/109572351
التغييرات التي قد تؤدي إلى حدوث عطل
- تمت إعادة تسمية
Worker.WorkerResult
إلىWorker.Result
. - يحتوي الإجراء
Worker.onStopped
الآن على مَعلمةisCancelled
إضافية يتم ضبطها علىtrue
عند إلغاء الإجراءWorker
صراحةً.
الإصدار 1.0.0-alpha02
24 أيار (مايو) 2018
إصلاح الأخطاء
- تم حلّ
NullPointerException
في State.isFinished()
. b/79550068 - تم إصلاح مشكلة أدّت إلى إعادة جدولة
Worker
فيApplication.onCreate()
. b/79660657 - تم إصلاح مشكلة كانت تتيح لك جدولة المزيد من العمل أكثر مما يسمح به نظام التشغيل. b/79497378
- تم نقل عملية تنظيف عمليات قفل التنشيط المرتبطة بعمليات
Worker
إلى سلسلة المهام في الخلفية. - يؤدي تنفيذ
AlarmManager
الآن إلى إزالة الملفات بشكل صحيح عند اكتمال جميع الأعمال المعلّقة. - تم إصلاح استعلامات SQL لتنظيف البيانات التي كانت تؤثر في اللغات غير الإنجليزية. b/80065360
- تمت إتاحة استخدام
float
فيData
. b/79443878 - يعرض
Data.Builder.putAll()
الآن مثيلًا منBuilder
. b/79699162 - المزيد من javadoc والإصلاحات في المستندات. b/79691663
تغييرات واجهة برمجة التطبيقات
- يمكن أن تتفاعل
Worker
مع عملية الإيقاف. يمكن استخدامWorker.isStopped()
للتحقّق مما إذا تم إيقافWorker
. يمكن استخدامWorker.onStopped()
لتنفيذ عمليات تنظيف بسيطة. - تعرض واجهة برمجة التطبيقات
Worker.getTags()
Set
من العلامات المرتبطة بالWorker
. - تمت إضافة
javax.time.Duration
وظائف زائدة لواجهات برمجة التطبيقات التي تأخذ مجموعة من المدة وTimeUnit
. يتم الاحتفاظ بهذه البيانات من قِبل@RequiresApi(26)
. - تم نقل إضافات
WorkManager
من حزمةandroidx.work.ktx
إلى حزمةandroidx.work
. تم إيقاف الإضافات القديمة نهائيًا وسيتم إزالتها في إصدار مستقبلي. - تم إيقاف
Configuration.withExecutor()
نهائيًا. استخدِمConfiguration.setExecutor()
بدلاً من ذلك.
الإصدار 1.0.0-alpha01
8 أيار (مايو) 2018
يعمل WorkManager على تبسيط جدولة تنفيذ المهام في الخلفية التي تضمن إكمالها مع مراعاة القيود. رقم الإصدار الأولي هو 1.0.0-alpha01
.