WorkManager
التعديل الأخير | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
30 تشرين الأول (أكتوبر) 2024 | 2.9.1 | - | - | - |
الإعلان عن التبعيات
لإضافة تبعية على 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) - إضافة معالجات استثناءات مخصّصة لعمال "مهام Google" (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
، يمكن الآن مراقبة مستوى تقدّم Worker من خلال Flow عبرWorkManager.getWorkInfosFlow
وطرق مشابهة. - يوفّر
WorkManager
الآن تلميحًا عن سبب إيقاف أحد مهام Worker في السابق. ويمكن البحث عنه من خلال عامل تشغيل نفسه باستخدام طريقةgetStopReason()
أو منWorkInfo
عبرgetStopReason()
. - تحديد المواعيد الدقيقة للعاملين بشكل دوري من خلال "
setNextScheduleTimeOverride
" يسمح ذلك بالحساب الديناميكي للجدول الزمني التالي للعمل الدوري، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة مثل أوقات إعادة التحميل التكيُّفية، أو السلوك المخصّص لإعادة المحاولة، أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون تحرّك. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
بهذه الأساليب لتجنُّب إلغاء عامل يعمل حاليًا أثناء جدولة العامل التالي. - اختبار WorkManager مع إنتاج مطابقة سلاسل المحادثات. يمكن استخدام
ExecutorsMode.PRESERVE_EXECUTORS
فيinitializeTestWorkManager
للحفاظ على مشغّلات التنفيذ التي تم ضبطها فيConfiguration
واستخدام سلسلة المحادثات الرئيسية الفعلية. - تم نقل واجهات برمجة تطبيقات Coroutines، مثل
CoroutineWorker
، من Artifact work-runtime-ktx الإضافي إلى وقت تشغيل العمل الرئيسي الخاص بالعناصر. أصبحت 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
الآن للعاملين في عناوين uris للمحتوى من أجل منحهم خانات مضمونة في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
، يمكن الآن مراقبة مستوى تقدّم Worker من خلال Flow عبرWorkManager.getWorkInfosFlow
وطرق مشابهة. - تحديد جداول زمنية دقيقة للعوامل المتكررة من خلال
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
الآن حدًا منفصلاً على العاملين في معرّف الموارد المنتظم (URI) للمحتوى لمنحهم خانات مضمونة في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 تجريبية لحِزم تطوير البرامج المستقبلية (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()
API. - في حال تمّ استدعاء
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 من خلال تفويض الخدمات التي تعمل في المقدّمة.
تغييرات واجهة برمجة التطبيقات
- إتاحة استخدام
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
.الإصدار
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".
الإصدار 2.5.0-rc01
13 كانون الثاني (يناير) 2021
تم طرح androidx.work:work-*:2.5.0-rc01
. يحتوي الإصدار 2.5.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خلل في عدم إلغاء صلاحية
getWorkInfosLiveData
بشكل صحيح بعد تعديل الكيانات عند استخدام واجهة برمجة التطبيقات المستندة إلىWorkQuery
. (aosp/1540566، b/173769028) - تم إصلاح خطأ كان يؤدي إلى عدم وضع علامة "ناجحة" على معاملات قاعدة البيانات في بعض الحالات النادرة. ويؤدي ذلك إلى حدوث مشاكل في بعض أجهزة Motorola. (aosp/1535368، b/175944460)
- تم إصلاح خطأ لتجاهل
NoSuchElementException
عند محاولة إلغاء الربط بعملية غير نشطة. (aosp/1530589) - يمكنك تحسين "
ConstraintTrackingWorker
" لإيقافListenableWorker
فقط إذا لم يسبق أن تم إيقافه. (aosp/1496844، b/172946965) - تعديل مكتبات androidx.work لاستهداف Java 8 (Ibd2f2)
الإصدار 2.5.0-beta02
2 كانون الأول (ديسمبر) 2020
تم إصدار androidx.work:work-*:2.5.0-beta02
. يحتوي الإصدار 2.5.0-beta02 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ في
androidx.work:work-multiprocess
حيث حظر WorkManager عن غير قصد سلسلة المهام التي تُجري عملية الاتصال عند محاولة الربط بالعملية المحدّدة. (aosp/1475538) - تم إصلاح الخطأ المتمثل في عدم حدوث تسوية
PeriodicWorkRequest
بشكل صحيح. (b/172475041، aosp/1489577) - تمت إضافة حل بديل لأحد أخطاء النظام الأساسي عند إيقاف الخدمة التي تعمل في المقدّمة عند استخدام واجهات برمجة تطبيقات
setForeground*
. (b/170924044، aosp/1489901)
الإصدار 2.5.0-beta01
28 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.work:work-*:2.5.0-beta01
. يحتوي الإصدار 2.5.0-beta01 على هذه المراجعات.
الميزات الجديدة
- يحدّ
WorkManager
تلقائيًا من عددWorkRequest
التي يمكن أن يرصدها جدول التشغيل الجاري. لا تزال الطلبات قائمة بأمر FIFO. (aosp/1455228) - تحاول
WorkManager
الاسترداد عندما تكون قاعدة بيانات التطبيق في حالة سيئة. (aosp/1463103)
إصلاح الأخطاء
- عند مقاطعة
ListenableWorker
، ضَع علامةENQUEUED
عليها على الفور حتى تتمكّن من إعادة جدولتها في وقت لاحق. (aosp/1455618، b/170273988)
الإصدار 2.5.0-alpha03
14 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.work:work-*:2.5.0-alpha03
. يحتوي الإصدار 2.5.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- لا يستخدم النوعان
TestListenableWorkerBuilder
وTestWorkerBuilder
الأنواع الأوّلية. (I883ad، b/169787349)
إصلاح الأخطاء
- استخدِم
ApplicationInfo
لتحديد اسم عملية التطبيق التلقائية. (b/168716641، aosp/1429950) - إصلاح قواعد إذن الوصول إلى
RemoteWorkManager
وRemoteWorkContinuation
لم تعُد واجهات برمجة التطبيقات هذه تحمل علامة@Restricted
. (aosp/1432091) - يجب إصلاح قواعد Proguard للتطبيق
:work:work-multiprocess
. (aosp/1432091) - يمكنك تحسين مراحل نشاط الإشعارات للعمل الطويل الأمد المرتبط بخدمة تعمل في المقدّمة. (b/168502234، aosp/1431331)
الإصدار 2.5.0-alpha02
16 أيلول (سبتمبر) 2020
تم إصدار androidx.work:work-*:2.5.0-alpha02
. يحتوي الإصدار 2.5.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- أضِف واجهة برمجة تطبيقات إلى WorkQuery لتتمكّن من استخدام
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
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
- تمت إضافة قاعدة Lint جديدة تضمن أن
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) - تمت إضافة قاعدة Lint جديدة تضمن أن
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
IssueRegistry
في 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) - تمت إضافة تحذير أخطاء نحوية عند استخدام
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.
الإصدار 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 جدولاً زمنيًا للعمل بشكل عادل عندما يقترب عدد
WorkRequest
المُدرَجة في "قائمة الانتظار" من الحدود القصوى للتخطيط. (aosp/1105766) - لا يستدعي WorkManager
ListenableWorker#onStopped()
إلا في حال عدم اكتمال العمل. (b/140055777) - تزيل أداة WorkManager الآن معلومات التقدّم عندما يتم إيقاف عامل أو يصل إلى حالته النهائية. (aosp/1114572)
- أصبح
Data
الآن يتضمنtoString()
أكثر فائدة. (b/140945323) - تتوفّر الآن طريقة
equals()
أفضل فيData
. وتتيح أيضًا استخدام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
متوافقة معsuspend
فيCoroutineWorker
وsetProgress
فيRxWorker
تعرضSingle<Void>
. باستخدام واجهات برمجة التطبيقات الجديدة هذه، يمكن للعاملين نقل معلومات التقدّم عبر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
11 تموز (يوليو) 2019
تم إصدار androidx.work:work-*:2.1.0
. هذا الإصدار مطابق للإصدار androidx.work:work-*:2.1.0-rc01
.
التغييرات المهمة منذ الإصدار 2.0.1
- يتطلّب
work-runtime-ktx
الآن Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلىbuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- تمت إضافة عملية إعداد على الطلب لخدمة WorkManager، والتي ستنشئ WorkManager
فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
- إيقاف أداة الإعداد التلقائية
- نفِّذ
Configuration.Provider
على عنصرApplication
المخصّص. - غيِّر كل مراجع
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
. وكجزء من هذا التغيير، أوقفناWorkManager.getInstance()
نهائيًا. من الأفضل دائمًا الاتصال بجهازWorkManager.getInstance(Context)
البديل الجديد، حتى إذا لم تكن بصدد تنفيذ عملية إعداد على الطلب.
- تتيح
PeriodicWorkRequest
الآن تأخيرات الظهور الأولية. يمكنك استخدام طريقةsetInitialDelay
علىPeriodicWorkRequest.Builder
لضبط مدة تأخير أولية. b/111404867 - تمت إضافة إمكانية تفويض
WorkerFactory
مسجَّلة واحدة أو أكثر باستخدامDelegatingWorkerFactory
. b/131435993 - تمت إضافة إمكانية تخصيص
Executor
المستخدَمة من قِبل WorkManager للقيام بجميع عمليات حفظ السجلات الداخلية من خلالConfiguration.Builder.setTaskExecutor
. - تمت إضافة إمكانية إنشاء فئتَين
Worker
وListenableWorker
قابلتَين للاختبار باستخدام الوحدتَينTestWorkerBuilder
وTestListenableWorkerBuilder
في العنصرwork-testing
.- يُرجى العِلم أنّ
work-testing
يستخدِم الآن Kotlin كتبعية ويضمّ عدّة إضافات Kotlin تلقائيًا.
- يُرجى العِلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo
. b/127290461 - يمكن الآن لأنواع
Data
تخزين وعرض وحدات البايت ومصفوفات وحدات البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData
. - يعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه حلّ بعض مشاكل قاعدة البيانات.
الإصدار 2.1.0-rc01
27 حزيران (يونيو) 2019
تم إصدار androidx.work:work-*:2.1.0-rc01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خلل كان يؤدي إلى تعطُّل أحد التطبيقات عند تنفيذ المهام باستخدام
JobScheduler
أثناء إجراء عملية احتياطية b/135858602.
الإصدار 2.1.0-beta02
20 حزيران (يونيو) 2019
تم طرح androidx.work:work-*:2.1.0-beta02
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يستخدم
TestListenableWorkerBuilder
الآنWorkerFactory
الصحيح عند إنشاء نُسخ منListenableWorker
. b/135275844 - تم إصلاح خطأ كان يتسبب في حدوث انحرافات في فترات تنفيذ
WorkRequest
بسبب إنهاء العملية. b/135272196
الإصدار 2.1.0-beta01
13 حزيران (يونيو) 2019
تم إصدار androidx.work:work-*:2.1.0-beta01
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه حلّ بعض مشاكل قاعدة البيانات. - تمت إزالة بعض عمليات إدخال/إخراج القرص في عملية التشغيل على سلسلة التعليمات الرئيسية.
- تم إصلاح التوقف المؤقت المحتمل في تتبع القيود. b/134361006
- تم إلغاء المهام غير الصالحة التي يُنسَبها WorkManager بشكل استباقي. b/134058261
- تمت إضافة بعض الطلبات الدفاعية إلى واجهات برمجة تطبيقات Job Scheduler للأجهزة التي تعمل بشكل غير صحيح.
الإصدار 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
تم إصدار WorkManager 2.0.1. هذا الإصدار مماثل للإصدار 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يتم الآن وضع علامة "
FAILED
" بشكلٍ صحيح على "Worker
" التي تعرض رمز الخطأException
بدون علامة، وتتوقّف عن تعطُّل عملية التطبيق.
الإصدار 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
على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى أو) أو إصدارات أقدم. هذه مواصلة لعملية الإصلاح في1.0.0-beta02
. b/121345393 - أضفنا
exported=false
لبعض المكوّنات في البيان التي كانت تفتقر إلى هذا التعليق التوضيحي. - تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في مستندات مستوى الحزمة.
الإصدار 1.0.0-beta02
15 كانون الثاني (يناير) 2019
يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة طارئة يمكن فيها تنفيذ المهام الدورية أكثر من مرة في كل فاصل زمني على الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات). b/121998363
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/121345393 - تم إصلاح التنفيذ الخاطئ للعمل في حال عدم استيفاء القيود على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى 22 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/122578012
- التعامل المحسَّن مع إكمال العمل ليكون أسرع في بعض الحالات الحدّية. b/122358129
- تمت إضافة تغيير لمعالجة حالات السباق المحتمَلة بين عدّة نُسخ
من
LiveData
التي يستخدمها WorkManager. - تم نقل استخدام الإصدار
Room
من التبعية1.1.1
بدلاً من الإصدار1.1.1-rc01
، لأنّ هذين الإصدارين متطابقان. b/122578011
الإصدار 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 من واجهة برمجة التطبيقات. - تمت إضافة طريقتَي إضافة Kotlin
Operation.await()
وListenableFuture.await()
. - تمت إعادة تسمية
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
معState
CANCELLED
خلال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
. - تمت إضافة طريقتَي إضافة Kotlin
Operation.await()
وListenableFuture.await()
. - تمت إعادة تسمية
Operation.getException()
إلىOperation.getThrowable()
. - إنّ الفئة
ContentUriTriggers
والطرق التي تشير إليها لم تعُد متاحة للاستخدام العام. - تمت إزالة بقية طرق التباين في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإصدار، يمكنك دمج الاختلافات الحالية باستخدام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 لإدراج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 - إصلاح مشكلة محتملة في حالة تسابق حيث تم
REPLACE
العمل b/116253486 وb/116677275NullPointerException
- يقبل
WorkContinuation.combine()
الآنWorkContinuation
واحدًا أو أكثر بدلاً منWorkContinuation
َين أو أكثر. b/117266752
تغييرات أساسية في واجهة برمجة التطبيقات
- تمّت إزالة جميع طرق وفئَات
deprecated
السابقة، لا سيما طريقة الإنشاء التلقائيةWorker
. - تم دمج الواجهة
WorkerFactory
والتنفيذ المحدّدDefaultWorkerFactory
في فئة مجردة تُسمىWorkerFactory
. - تمّت إزالة "
WorkManager.synchronous()
" و"WorkContinuation.synchronous()
". - تعرض
WorkManager.getStatus*()
طريقة الآنListenableFuture
.WorkManager.getStatus*LiveData()
تُرجِعLiveData
.
الإصدار 1.0.0-alpha09
19 أيلول (سبتمبر) 2018
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف يتضمّن مسارًا مستقلاً عن نظام التشغيل 'META-INF/proguard/androidx-annotations.pro'"، يُرجى إدراج ما يلي في ملف gradle كحلّ مؤقت إلى أن نحلّ المشكلة في الإصدار alpha10:
رائع
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة إصلاح آخر كان مطلوبًا لخطأ "100 وظيفة". b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب حالات السباق. b/114705286
- تم تفويض طلبات "
ConstraintTrackingWorker.onStopped(boolean)
" إلى جهاز "Worker
" الأساسي. b/114125093 - فرض الحد الأدنى الصحيح لتأخير الانتظار في Firebase JobDispatcher b/113304626
- تضمن ميزة "المعالجة المتعدّدة للخيوط" المحسّنة الأداء الداخلي للمكتبة.
- تصحيح مشكلة محتملة تتعلق بإزالة تكرار
LiveData
داخليًا.
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء مثيلات خاصة بك لـ
Worker
في وقت التشغيل من خلال تحديدWorkerFactory
كجزء منWorkManager.Configuration
. المصنع الاحتياطي هو "DefaultWorkerFactory
"، والذي يطابق سلوك الإصدارات السابقة من WorkManager.- تم وضع علامة على علامتَي الإنشاء التلقائيتَين ل
Worker
وNonBlockingWorker
بأنّهما قيد الإيقاف. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)
) واستدعاءsuper(Context, WorkerParameters)
، وستزيل الإصدارات المستقبلية من WorkManager الدالة الإنشائية التلقائية.
- تم وضع علامة على علامتَي الإنشاء التلقائيتَين ل
- لقد بدأنا باستخدام العنصر
ListenableFuture
الجديد داخليًا (خالٍ من تبعيات Guava). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيتيح هذا التغيير إظهارNonBlockingWorker
في النهاية. - إضافة إمكانية بدء عمل موقّت في
TestDriver
من خلالTestDriver.setInitialDelayMet(UUID)
وTestDriver.setPeriodDelayMet(UUID)
b/113360060
التغييرات التي قد تؤدي إلى حدوث أعطال
- تم إيقاف وظيفتَي الإنشاء التلقائيتَين
Worker
وNonBlockingWorker
نهائيًا. يُرجى نقل البيانات إلى المنشئ الجديد في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية المُنشئ التلقائي.
الإصدار 1.0.0-alpha08
27 آب (أغسطس) 2018
إصلاح الأخطاء
- تم تصنيف مكونات WorkManager بوضوح على أنّها تشغيل مباشر بدون إدراكها لكي لا يتم تنشيطها أثناء التشغيل المباشر. وفي المستقبل، سنوفّر إصدارًا من WorkManager متوافقًا مع عملية التشغيل المباشر. b/112665532
- تم إصلاح مشكلة عدم تنفيذ العمل الذي تمت إعادة محاولة تنفيذه. b/112604021
- تم إصلاح عدم تنفيذ العمل الدوري بشكل متكرّر (مرتبط بالمشكلة أعلاه). b/112859683
- الالتزام بسياسات التراجع عندما تكون عملية التطبيق قيد التشغيل
- تم تصحيح رسائل الاستثناءات في
Data
للإشارة إلى أن الحد الأقصى هو 10 كيلوبايت. - تم خفض الحد الأقصى لقيمة
Configuration.setMaxSchedulerLimit(int)
إلى 50 لتجنّب بعض التأخير في إكمال معالجةJobScheduler
. b/112817355
الإصدار 1.0.0-alpha07
16 آب (أغسطس) 2018
إصلاح الأخطاء
- تم إصلاح استعلام SQL محتمل بحدود سالبة يمكن أن تؤدي إلى عرض عدد غير محدود من النتائج.
- يؤدي العمل الذي انتهى التنفيذ الآن بشكل صحيح إلى إلغاء جميع النُسخ المعلقة لهذا العمل في أدوات جدولة أخرى. أدّى ذلك إلى تجاوز الحدّ الأقصى المسموح به لعدد الوظائف البالغ
JobScheduler
. b/111569265 - تم حلّ
ConcurrentModificationException
فيConstraintTracker
. b/112272753 - تم تغيير التعليقات التوضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229
تغييرات واجهة برمجة التطبيقات
- يمتدّ الآن
Worker
إلى فئة جديدة،NonBlockingWorker
. ولا يؤثّر ذلك في أي استخدام حالي. في المستقبل، ستصبحNonBlockingWorker
عنصرًا متوافقًا بالكامل مع حلول سلاسل المحادثات المخصّصة. - تم تغيير التعليقات التوضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229 - إضافات Kotlin: تم إيقاف
Map.toWorkData()
نهائيًا وتمت إضافةworkDataOf(vararg Pair<String, Any?>)
من المستوى الأعلى لتكون أكثر اتساقًا مع واجهات برمجة التطبيقات الحالية.
الإصدار 1.0.0-alpha06
1 آب (أغسطس) 2018
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل b/111801342
- إصلاح خطأ يؤدي إلى عدم تشغيل "
PeriodicWork
" في الموعد المحدّد أثناء تفعيل وضع "القيلولة" b/111469837 - إصلاح مشكلة تعارض في المعالجة عند تتبُّع القيود التي تؤدي إلى تعطُّل
WorkManager
googlecodelabs/android-workmanager/issues/56 - يمكنك إنشاء قيم
WorkRequest
فريدة عند استخدام "WorkRequest.Builder#build()
". b/111408337 - لا تفعِّل استخدام
RescheduleReceiver
إلا عندما تكون هناكWorkRequest
تحتاج إليه. b/111765853
الإصدار 1.0.0-alpha05
24 تموز (يوليو) 2018
تغييرات واجهة برمجة التطبيقات
- تم الآن إضافة تعليق توضيحي إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. بدلاً من ذلك، إذا لم يتم إعداد اللغة المفردة بشكل صحيح في حالات الإعداد اليدوي، ستعرض الطريقةIllegalStateException
. هذا تغيير أساسي في واجهة برمجة التطبيقات. - تمت إضافة واجهة برمجة تطبيقات جديدة،
Configuration.Builder.setMinimumLoggingLevel(int)
، يمكنها التحكّم في مستوى تفصيل WorkManager. يسجِّل WorkManager الإصدارLog.INFO
والإصدارات الأحدث تلقائيًا. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية بعد الآن (يكونnull
بشكل ضمني). هذا تغيير جذري في واجهة برمجة التطبيقات. - تم وضع علامة على بعض الطرق بأنها مطلوبة للاستخدام الداخلي فقط على أنّها
@hide
. ويشمل ذلكConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
. هذا تغيير قد يؤدي إلى إيقاف واجهة برمجة التطبيقات.
إصلاح الأخطاء
- لم يعُد WorkManager ينفِّذ المهام أثناء الحالات المعروفة للنسخ الاحتياطي التلقائي. وقد يؤدي ذلك إلى حدوث عطل. b/110564377
- تم إصلاح مشكلة جدولة
PeriodicWorkRequest
المزدوجة عند استخدامJobScheduler
. b/110798652 - تم إصلاح مشكلة عدم تنفيذ
PeriodicWorkRequest
بشكل صحيح بعد وضع السكون في الجهاز. b/111469837 - تم إصلاح مشكلة التأخيرات الأولية عند استخدام Firebase JobDispatcher. b/111141023
- تم إصلاح بعض شروط السباق المحتملة ومشاكل التوقيت.
- تمّت إزالة
BroadcastReceiver
بشكل صحيح والتي لم تعد مطلوبة. - تم تحسين عملية إعادة جدولة الأداء عند إعادة تشغيل التطبيقات بعد فرض إغلاقها.
- تم السماح بطلب "
TestScheduler.setAllConstraintsMet(UUID)
" قبل إدراجWorkRequest
المحدّد أو بعده. b/111238024
التغييرات التي قد تؤدي إلى حدوث أعطال
- تم الآن إضافة تعليق توضيحي إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية بعد الآن (يكون تلقائيًاnull
). - تم وضع علامة على بعض الطرق بأنها مطلوبة للاستخدام الداخلي فقط على أنّها
@hide
. ويشمل ذلك الدالة الإنشائيةConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
.
الإصدار 1.0.0-alpha04
26 حزيران (يونيو) 2018
إصلاح الأخطاء
- تمّت إعادة جدولة
PeriodicWorkRequest
بشكلٍ صحيح عند استخدام التنفيذ المستنِد إلىAlarmManager
. - تم إصلاح خطأ ANR محتمل عند إعادة جدولة جميع العاملين بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
- تمت إضافة تعليقات توضيحية حول قابلية العدم إلى واجهات برمجة تطبيقات WorkManager المختلفة. b/110344065
- تسجيل الاستثناءات غير المرصودة التي تحدث أثناء تنفيذ Worker b/109900862
- تم السماح بعمليات نقل بيانات قاعدة البيانات المدمِّرة في حال قرّرت العودة إلى إصدار قديم من WorkManager. b/74633270
- تم إصلاح مشكلة تعطُّل عملية نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا لا تحدث إلا إذا استخدمت تنسيق العلامة الضمنية نفسه بنفسك.
الإصدار 1.0.0-alpha03
19 حزيران (يونيو) 2018
إصلاح الأخطاء
تم إصلاح خطأ في التنفيذ المستنِد إلى
AlarmManager
. b/80346526.تم إصلاح مهام النسخ المكرّر عند استخدام
JobScheduler
بعد إعادة تشغيل الجهاز.أصبحت المهام التي تستخدم عوامل تشغيل معرّفات الموارد المنتظمة (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
تغييرات واجهة برمجة التطبيقات
- يمكن أن تتفاعل "
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
.