WorkManager
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
30 يوليو 2025 | 2.10.3 | - | - | - |
تعريف التبعيات
لإضافة تبعية على WorkManager، يجب إضافة مستودع Google Maven إلى مشروعك:
أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle
لتطبيقك أو وحدتك:
Groovy
dependencies { def work_version = "2.10.3" // (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.10.3" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
للحصول على معلومات حول استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.
لمزيد من المعلومات حول العناصر التابعة، يُرجى الاطّلاع على إضافة عناصر تابعة للإنشاء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 2.10
الإصدار 2.10.3
30 يوليو 2025
تم طرح androidx.work:work-*:2.10.3
. يحتوي الإصدار 2.10.3 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى إبلاغ العاملين الذين لديهم قيود شبكة مماثلة لعامل سابق بعدم استيفاء القيود. (b/427115602).
الإصدار 2.10.2
18 يونيو 2025
تم طرح androidx.work:work-*:2.10.2
. يحتوي الإصدار 2.10.2 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عند استمرار العاملين في تنفيذ طلبات الشبكة والقدرات التلقائية التي تؤدي إلى إعادة إضافة القدرات التي تمت إزالتها، ما يتسبب في سوء سلوك العاملين الذين لديهم قيود على الشبكة. (b/409716532)
- تم إصلاح خطأ كان يتسبّب في عدم تنفيذ العاملين الذين لديهم قيود على الشبكة على الفور بسبب عدم استيفاء القيود على الرغم من توفّر الشبكة والإمكانات. (b/423403088)
الإصدار 2.10.1
23 أبريل 2025
تم طرح androidx.work:work-*:2.10.1
. يحتوي الإصدار 2.10.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- تقليل احتمالية حدوث خطأ
TooManyRequestsException
عند تسجيلWorkManager
لـNetworkCallback
مستخدَم لتتبُّع القيود (b/231499040، b309d5)
الإصدار 2.10.0
30 أكتوبر 2024
تم طرح androidx.work:work-*:2.10.0
. يتضمّن الإصدار 2.10.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.9.1
- تمت إضافة علامات تتبُّع إلى المهام من
WorkManager
، ما يسهّل فهم الأمر adb shell dumpsys jobscheduler، لأنّه سيتضمّن اسم Worker الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبُّع حول المناطق الرئيسية فيWorkManager
. - تمت إضافة
Configuration.workerCoroutineContext
للتحكّم في أداة الإرسال التي يتم تنفيذCoroutineWorker
فيها. - يمكن للمطوّرين تحديد
NetworkRequest
كقيد على عامل من خلال طريقةConstraints.setRequiredNetworkRequest
. يتيح ذلك التحكّم بشكل أدق في الشبكة التي يجب أن يعمل عليها هذا العامل. - تم الآن تجميع الإصدار
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، لأنّه سيتضمّن اسم Worker الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبُّع حول المناطق الرئيسية فيWorkManager
.
تغييرات واجهة برمجة التطبيقات
- تم الآن تجميع الإصدار 2.10.0 من WorkManager باستخدام حزمة تطوير البرامج (SDK) 35.
- إصلاح مشكلة انتهاء المهلة في مهام الخلفية التي تعمل في المقدّمة من النوع "خدمة قصيرة" و"مزامنة البيانات"، ما يؤدي إلى حدوث خطأ ANR عندما لا تستدعي
WorkManager
الدالةstopSelf()
لا ينطبق هذا الإصلاح إلا على الأجهزة التي تعمل بالإصدارين 34 و35 من واجهة برمجة التطبيقات حيث تم تقديم أنواع الخدمات التي تعمل في المقدّمة. (ca06b2, b/364508145) - واجهات برمجة تطبيقات
WorkerParameters
جديدة تتيح تبديل العملية البعيدة التي يرتبط بهاWorker
عند استخدامWorkerFactory
. (Ibdc8a وIe8a90 وI7373f)
إصلاح الأخطاء
- تم إصلاح عُطل ناتج عن محاولة
WorkManager
إعادة تشغيل عامل يعمل لفترة طويلة (أي عامل يعمل في المقدّمة) عندما تم إبطال أذونات Android 14 الأساسية لنوع العمل الذي يتم تنفيذه في المقدّمة. (b/333957914) - تمت إزالة التحديد اليدوي لإمكانية الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "مكوّن Android الإضافي" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "مكوّن Android الإضافي" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)
الإصدار 2.10.0-alpha02
17 أبريل 2024
تم طرح androidx.work:work-*:2.10.0-alpha02
. يحتوي الإصدار 2.10.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية إرسال فترات التتبُّع من خلال
@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
واستخدام سلسلة التعليمات الرئيسية الفعلية. - تم نقل واجهات برمجة تطبيقات الروتينات المشتركة، مثل
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
الآن على حدّ منفصل لبرامج content uri العاملة لمنحها خانات مضمونة فيJobScheduler
ومنع فقدان تحديثات المحتوى في ظلّ الحمل الكبير. يمكن ضبط الحدّ الأقصى من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تمت إضافة قيود إلى
WorkInfo
. (I162c0)
الإصدار 2.9.0-rc01
18 أكتوبر 2023
تم طرح androidx.work:work-*:2.9.0-rc01
. يحتوي الإصدار 2.9.0-rc01 على عمليات الإيداع التالية.
- لم يتم إجراء أي تغييرات منذ آخر إصدار تجريبي
الإصدار 2.9.0-beta01
6 سبتمبر 2023
تم طرح androidx.work:work-*:2.9.0-beta01
. يحتوي الإصدار 2.9.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة ثوابت لأسباب التوقّف التي تعرضها الدالتان
WorkInfo.stopReason
وListenableWorker.stopReason
(I0cc00)
الإصدار 2.9.0-alpha02
26 يوليو 2023
تم طرح androidx.work:work-*:2.9.0-alpha02
. يحتوي الإصدار 2.9.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
- تقدّم
WorkManager
الآن تلميحًا حول سبب إيقاف عامل سابقًا. يمكن طلبها من عامل نفسه باستخدام طريقةgetStopReason()
أو منWorkInfo
باستخدامgetStopReason()
.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
stopReason
إلىWorkInfo
. يصبح هذا الرابط متاحًا بعد تشغيل العاملstopReason
. قد يكون ذلك مفيدًا في عملية الإبلاغstopReason
بطريقة قابلة للاستخدام، لأنّه بمجرد إيقاف عامل، يمكن إيقاف التطبيق نفسه بسرعة كبيرة. (I21386) - السماح بضبط Clock من خلال الإعدادات واستخدامه لتحديد تسلسل تنفيذ اختبارات Worker. (Ic586e)
- تمت إضافة طريقة
getStopReason()
إلىListenableWorker
التي تقدّم تلميحًا عن سبب إيقاف العامل. (I07060) - تمت إضافة
WorkManagerTestInitHelper#closeWorkDatabase()
لتجنُّب تحذير Closeguard بشأن الموارد التي تم تسريبها. (Ia8d49)
إصلاح الأخطاء
- تمت إضافة إمكانية تجاوز
overrideNextScheduleTime
باستخدامTestDriver
وإصلاح المشاكل المتعلّقة بإمكانية الاختبار. (Ic2905)
الإصدار 2.9.0-alpha01
7 يونيو 2023
تم طرح androidx.work:work-*:2.9.0-alpha01
. يحتوي الإصدار 2.9.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
- إمكانية المراقبة من خلال
Flow
بدلاً منLiveData
، يمكن الآن متابعة تقدّم العامل من خلالWorkManager.getWorkInfosFlow
في Flow وطرق مشابهة. - جدولة دقيقة للعاملين الدوريين من خلال
setNextScheduleTimeOverride
يتيح ذلك إجراء حسابات ديناميكية لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات إعادة التحميل التكيّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون حدوث أي انحراف. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
مع هذه الأساليب لتجنُّب إلغاء عامل قيد التشغيل حاليًا أثناء جدولة العامل التالي. - اختبارات
WorkManager
مع ميزة "مطابقة سلاسل المحادثات" في مرحلة الإنتاج يمكن استخدامExecutorsMode.PRESERVE_EXECUTORS
للحفاظ على المنفّذين الذين تم ضبطهم فيConfiguration
واستخدام سلسلة التعليمات الرئيسية الفعلية. - تم نقل واجهات برمجة التطبيقات للروتينات المشتركة، مثل
CoroutineWorker
، من العنصر الإضافيwork-runtime-ktx
إلى العنصر الرئيسيwork-runtime
.work-runtime-ktx
فارغ الآن.
تغييرات واجهة برمجة التطبيقات
- أصبحت طريقة وضع تصميم
WorkInfo
علنية الآن، ويمكن أن يكون ذلك مفيدًا في الاختبار. (Ia00b6، b/209145335) - أصبح
work-runtime-ktx
فارغًا الآن، وأصبحتCoroutineWorker
والأدوات المساعدة الأخرى الخاصة بلغة Kotlin متاحة الآن في العنصر الرئيسيwork-runtime
. (I71a9a) - تمت إضافة الطريقة
setNextScheduleTimeOverride
، ما يتيح إعداد جداول العمل الدورية بدقة (I3b4da) - تمت إعادة تسمية "
getEarliestRunTimeMillis
" إلى "getNextScheduleTimeMillis
". (I2bd7a) - تتم إضافة معلومات وقت التشغيل المجدوَلة التالية إلى
WorkInfo
. (I797e4) - تتم إضافة معلومات التأخير الأوّلي والدورية إلى
WorkInfo
. (I52f2f) - تمت إضافة طريقة مراقبة العاملين من خلال "التدفّقات" عبر الطرق
getWorkInfosByTagFlow
وgetWorkInfoByIdFlow
وgetWorkInfosForUniqueWorkFlow
وgetWorkInfosFlow
(If122a) - تمت إضافة التعليقات التوضيحية
@RequiresApi(...)
الناقصة إلى منشئات وخصائص Constraints. وهي الآن متوافقة مع التعليقات التوضيحية المقابلة في دوال الضبط فيConstraints.Builder
التي كانت متوفّرة في الإصدارات الأولى منWorkManager
. (I6d7d2) - يحتوي
WorkManager
الآن على حدّ منفصل لبرامج content 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
بطريقة غير مزعجة، مع الحفاظ على وقت الإضافة الأصلي والتسلسل وما إلى ذلك. يمكنك الاطّلاع على منشور المدوّنة المفصّل حول هذه الميزة، بالإضافة إلى مستندات Java الخاصة بـWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
للحصول على مزيد من التفاصيل.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل العمل مع الحفاظ على وقت إضافته الأصلي إلى قائمة الانتظار وتسلسله.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تسمح هذه السياسة بتعديل مهمة دورية حسب الاسم. وهي تشبهREPLACE
الحالية، ولكنها أقل تدخلاً: فهي لا تلغي العامل إذا كان قيد التشغيل حاليًا، وتحافظ على وقت الإضافة إلى قائمة الانتظار، ويتم احتساب التأخير الأولي والمدة من وقت الإضافة الأصلي إلى قائمة الانتظار، وليس من وقت التعديل. تم إيقافREPLACE
نهائيًا للحدّ من الالتباس بينREPLACE
وUPDATE
اللذين يتشابهان كثيرًا في الاسم. إذا كنت تريد الاحتفاظ بالدلالات السابقة لـREPLACE
، يمكنك استخدامCANCEL_AND_REENQUEUE
المضافة حديثًا، وهي مطابقة لـREPLACE
. (I985ed، b/219446409) - تمّت إضافة إمكانية اعتراض أخطاء الجدولة التي توفّر
Consumer<Throwable>
من خلال setSchedulingExceptionHandler) - تمت إضافة إمكانية تقديم
Consumer<Throwable>
من خلال setInitializationExceptionHandler لتحديد ما إذا كانت هناك مشاكل عند محاولة إعداد WorkManager. - تم نقل أدوات المساعدة المضمّنة في
OneTimeWorkRequest
وPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، b/209145335) - تمت إضافة طرق المساعد
WorkQuery.fromIds
وWorkQuery.fromStates
وWorkQuery.fromUniqueWorkNames
وWorkQuery.fromTags
لإنشاءWorkQuery
مباشرةً. (b/199919736) (If48f2، b/199919736) - تمّت إضافة "
getForegroundInfo
" إلى "Worker
". (Ic1ead) - يتضمّن
RxWorker
لكلّ من RxJava 2 وRxJava 3 الآنsetForeground
الذي يعرضCompletable
ويمكن استخدامه بدلاً منsetForegroundInfoAsync
الذي يعرضListenableFuture
- تحتوي الدالة
RxWorker
لكل من RxJava 2 وRxJava 3 علىgetForegroundInfo
التي تعرضSingle
ويمكن استخدامها بدلاً منgetForegroundInfoAsync
التي تعرضListenableFuture
. (b/203851459) - يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام
Constraints.Builder
، ما يوفّر الوقت لمستخدمي Kotlin. (Idc390، b/137568653) - تمت إضافة إمكانية التحقّق مما إذا تمّت تهيئة
WorkManager
. بالإضافة إلى ذلك، تمت إضافة واجهة برمجة تطبيقاتgetConfiguration()
جديدة للمطوّرين للحصول على الإعدادات التي تمّت تهيئةWorkManager
بها. (I6eff3، b/212300336)
إصلاح الأخطاء
- تم إصلاح مشكلة في أداة الجدولة النهمة كانت تمنع العاملين من التشغيل فورًا عند التحميل. (I9686b، b/248111307)
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذنPOST_NOTIFICATIONS
على الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278) - نقل عمليات الإلغاء من
CoroutineScope
إلىListenableFuture
عند استخدامsuspendCancellableCoroutine
الإصدار 2.8.0-rc01
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.work:work-*:2.8.0-rc01
. يتضمّن الإصدار 2.8.0-rc01 عمليات الدمج التالية.
الميزات الجديدة
- لا يتضمّن هذا الإصدار أي ميزات جديدة. وهذا في الأساس عبارة عن زيادة في رقم الإصدار.
الإصدار 2.8.0-beta02
9 نوفمبر 2022
تم طرح androidx.work:work-*:2.8.0-beta02
. يحتوي الإصدار 2.8.0-beta02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح طريقة
equals
فيWorkInfo
، والتي لم تكن تأخذ في الاعتبار معلومات الجيل الجديد في السابق. (4977cc)
الإصدار 2.8.0-beta01
5 أكتوبر 2022
تم طرح androidx.work:work-*:2.8.0-beta01
. يحتوي الإصدار 2.8.0-beta01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة في أداة الجدولة النهمة كانت تمنع العاملين من التشغيل فورًا عند التحميل. (I9686b، b/248111307)
الإصدار 2.8.0-alpha04
7 أيلول (سبتمبر) 2022
تم طرح androidx.work:work-*:2.8.0-alpha04
. يحتوي الإصدار 2.8.0-alpha04 على عمليات الإكمال هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkerInfo.getGeneration()
وWorkerParameters.getGeneration()
اللذين يعرضان إنشاء عامل. يكون للعامل أجيال متعددة، إذا تم تعديله من خلالWorkManager.updateWork
أوWorkManager.enqueueUniquePeriodicWork
باستخدامExistingPeriodicWorkPolicy.UPDATE
. يُرجى العِلم أنّه إذا كان العامل قيد التشغيل حاليًا، من المحتمل أن تعرض هذه الطريقة جيلًا أحدث من جيل العامل قيد التشغيل حاليًا إذا حدث تحديث أثناء تنفيذ العامل. (I665c5، b/219446409) (I128a9، b/219446409) - تمت إضافة
InitializationExceptionHandler
، وهو معالج استثناء يمكن استخدامه لتحديد ما إذا كانت هناك مشاكل عند محاولة تهيئةWorkManager
. (I061de)
الإصدار 2.8.0-alpha03
10 أغسطس 2022
تم طرح androidx.work:work-*:2.8.0-alpha03
. يحتوي الإصدار 2.8.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة إمكانية تعديل
WorkRequests
بطريقة غير مزعجة، مع الحفاظ على وقت الإضافة الأصلي، والربط، وما إلى ذلك. يمكنك الاطّلاع علىWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
لمزيد من التفاصيل.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل العمل مع الحفاظ على وقت إضافته الأصلي إلى قائمة الانتظار وتسلسله.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تتيح هذه السياسة تعديل مهمة دورية حسب الاسم. وهي تشبهREPLACE
الحالية، ولكنها أقل تدخلاً: فهي لا تلغي العامل إذا كان قيد التشغيل حاليًا، كما أنّها تحتفظ بوقت الإضافة إلى قائمة الانتظار، ويتم احتساب التأخير الأولي والمدة من وقت الإضافة الأصلي إلى قائمة الانتظار، وليس من وقت التعديل. تم إيقافREPLACE
نهائيًا للحدّ من الالتباس بينREPLACE
وUPDATE
اللذين يحملان اسمًا مشابهًا جدًا. إذا كنت تريد الاحتفاظ بالدلالات السابقة لـREPLACE
، يمكنك استخدامCANCEL_AND_REENQUEUE
المضافة حديثًا، وهي مطابقة لـREPLACE
. (I985ed، b/219446409) - إضافة إمكانية اعتراض استثناءات الجدولة من خلال تحديد
SchedulingExceptionHandler
(I033eb) - تم نقل أدوات المساعدة المضمّنة في
OneTimeWorkRequest
وPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، b/209145335)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذن POST_NOTIFICATIONS على حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 2.8.0-alpha02
6 أبريل 2022
تم طرح androidx.work:work-*:2.8.0-alpha02
. يحتوي الإصدار 2.8.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام Builder، ما يوفّر الوقت لمستخدمي Kotlin. (Idc390، b/137568653)
- تمت إضافة إمكانية التحقّق مما إذا تمّت تهيئة
WorkManager
. بالإضافة إلى ذلك، تمت إضافة واجهة برمجة تطبيقاتgetConfiguration()
جديدة للمطوّرين للحصول على الإعدادات التي تمّت تهيئةWorkManager
بها. (I6eff3، b/212300336)
الإصدار 2.8.0-alpha01
12 يناير 2022
تم طرح androidx.work:work-*:2.8.0-alpha01
. يحتوي الإصدار 2.8.0-alpha01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طرق مساعدة
WorkQuery.fromStates
وWorkQuery.fromUniqueWorkNames
وWorkQuery.fromTags
لإنشاء WorkQuery مباشرةً. (If48f2، b/199919736) - إضافة طرق تجريبية في BuildCompat لإصدارات SDK المستقبلية (Iafd82، b/207528937)
- إضافة
getForegroundInfo
إلىWorker
(Ic1ead) - تمت إضافة طرق مساعدة
WorkQuery.fromIds
لإنشاء WorkQuery مباشرةً من المعرّفات. (Ie5bdf، b/199919736) - يتضمّن RxWorker الآن
setForeground
يعرضCompletable
يمكن استخدامه بدلاً منsetForegroundInfoAsync
الذي يعرضListenableFuture
. (I85156) - يتضمّن RxWorker لإصدار RxJava 2 الآن
getForegroundInfo
الذي يعرضSingle
ويمكن استخدامه بدلاً منgetForegroundInfoAsync
الذي يعرضListenableFuture
. (I21c91، b/203851459) - يتضمّن RxWorker لإصدار RxJava 3 الآن
getForegroundInfo
يعرضSingle
يمكن استخدامه بدلاً منgetForegroundInfoAsync
الذي يعرضListenableFuture
. (I1ca8a) - يتضمّن RxWorker الآن
setForeground
يعرضCompletable
يمكن استخدامه بدلاً منsetForegroundInfoAsync
الذي يعرضListenableFuture
. (I992a3، b/203851459)
إصلاح الأخطاء
- نقل عمليات الإلغاء من
CoroutineScope
إلىListenableFuture
عند استخدامsuspendCancellableCoroutine
(I77e63)
الإصدار 2.7
الإصدار 2.7.1
17 نوفمبر 2021
تم طرح androidx.work:work-*:2.7.1
. يحتوي الإصدار 2.7.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- يتم نقل عمليات الإلغاء في
CoroutineScope
إلىListenableFuture
عند استخدامsuspendCancellableCoroutine
. (I77e63) - يتم طرح استثناء على الفور عند وضع علامة "عاجل" على طلبات العمل المؤجّلة. bef1762
الإصدار 2.7.0
13 أكتوبر 2021
تم طرح androidx.work:work-*:2.7.0
. يتضمّن الإصدار 2.7.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.6.0
توفّر WorkManager واجهة برمجة تطبيقات
WorkRequest.Builder.setExpedited(...)
جديدة للمساعدة في التعامل مع القيود المفروضة على الخدمات التي تعمل في المقدّمة في نظام التشغيل Android 12.عند استخدام
setExpedited(...)
، يفوّض WorkManager المهام السريعة في JobScheduler بدءًا من Android 12، مع توفير توافق مع الإصدارات القديمة من Android من خلال التفويض إلى "خدمة تعمل في المقدّمة".
الإصدار 2.7.0-rc01
29 سبتمبر 2021
تم طرح androidx.work:work-*:2.7.0-rc01
. يحتوي الإصدار 2.7.0-rc01 على عمليات الإيداع هذه.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.7.0-beta01
.
الإصدار 2.7.0-beta01
1 سبتمبر 2021
تم طرح androidx.work:work-*:2.7.0-beta01
. يحتوي الإصدار 2.7.0-beta01 على عمليات الدمج هذه.
الميزات الجديدة
- تقليل التنازع على SQLite المتعدد العمليات عند تهيئة WorkManager
تغييرات واجهة برمجة التطبيقات
- إزالة واجهات برمجة التطبيقات
@ExperimentalExpeditedWork
لأنّ واجهات برمجة التطبيقات الأساسية للنظام الأساسي في Android 12 (الإصدار S) مستقرة. (aosp/1792806)
إصلاح الأخطاء
- تقديم رسالة خطأ أفضل للعاملين الذين يستخدمون ميزة "التحسين السريع" ولا ينفّذون
getForegroundInfoAsync()
(aosp/1809376)
الإصدار 2.7.0-alpha05
21 تموز (يوليو) 2021
تم طرح androidx.work:work-*:2.7.0-alpha05
. يحتوي الإصدار 2.7.0-alpha05 على عمليات الإيداع هذه.
يتضمّن هذا الإصدار أيضًا إصلاحات للأخطاء من إصدار WorkManager 2.6.0-beta02
.
الإصدار 2.7.0-alpha04
2 حزيران (يونيو) 2021
تم طرح androidx.work:work-*:2.7.0-alpha04
.
يتضمّن هذا الإصدار أيضًا التغييرات من الإصدار 2.6.0-beta01.
تغييرات واجهة برمجة التطبيقات
- لم يعُد
ListenableWorker.setForegroundAsync()
متوقفًا نهائيًا. - ننصحك باستخدام واجهة برمجة التطبيقات
WorkRequest.Builder.setExpedited(...)
عند الإمكان. لتقديم دعم أفضل للحالات التي لا يخضع فيها التطبيق لقيود الخدمة التي تعمل في المقدّمة، يمكن للمطوّرين استخدام واجهة برمجة التطبيقاتListenableWorker.setForegroundAsync()
. - في حال استدعاء
ListenableWorker.setForegroundAsync()
عندما يخضع التطبيق لقيود الخدمة التي تعمل في المقدّمة، سيؤدي ذلك إلى طرح الخطأ ForegroundServiceStartNotAllowedException.
إصلاح الأخطاء
- عند إعادة جدولة المهام المعجَّلة، لن تكون معجَّلة بعد ذلك. تصبح وظائف عادية.
الإصدار 2.7.0-alpha03
21 أبريل 2021
تم طرح androidx.work:work-*:2.7.0-alpha03
. يحتوي الإصدار 2.7.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
من WorkManager
2.6.0-alpha02
: إضافة إمكانية استخدام العاملين الذين يمكنهم التشغيل في أي عملية (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
s المستعجلة
الإصدار 2.6.0
الإصدار 2.6.0
1 سبتمبر 2021
تم طرح androidx.work:work-*:2.6.0
. يتضمّن الإصدار 2.6.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.5.0
يستخدم WorkManager الآن
androidx.startup
لإعداد WorkManager. إذا كنت قد استخدمتtools:node="remove"
ContentProvider
المستخدَم لتهيئة WorkManager في السابق، عليك إجراء ما يلي بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />
تمت إضافة دعم لـ Workers التي يمكن تشغيلها في أي عملية. (Iaf200)
تمت إضافة
RemoteCoroutineWorker
وهو تنفيذ لـ RemoteListenableWorker يمكن ربطه بعملية بعيدة. (I30578)
الإصدار 2.6.0-rc01
4 أغسطس 2021
تم طرح androidx.work:work-*:2.6.0-rc01
. يحتوي الإصدار 2.6.0-rc01 على عمليات الإيداع التالية.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.6.0-beta02
.
الإصدار 2.6.0-beta02
21 تموز (يوليو) 2021
تم طرح androidx.work:work-*:2.6.0-beta02
. يحتوي الإصدار 2.6.0-beta02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- يتم الآن إلغاء ربط
RemoteWorkManager
بشكل صحيح منRemoteWorkManagerService
، ما يتيح لـRemoteWorkManagerService
إزالة البيانات بشكل صحيح. aosp/1730694 - تتم الآن إزالة ربط
RemoteListenableWorker
بشكل صحيح منRemoteWorkerService
، ما يسمح لـRemoteWorkerService
بإجراء عملية التنظيف بشكل صحيح. aosp/1743817 - لا يتم تشغيل
ForceStopRunnable
الآن إلا في عملية التطبيق الأساسية. هذا تحسين يمنع تعارض الموارد للتطبيقات التي تستخدم عمليات متعددة. aosp/1749180 وaosp/1761729
الإصدار 2.6.0-beta01
2 حزيران (يونيو) 2021
تم طرح androidx.work:work-*:2.6.0-beta01
. يحتوي الإصدار 2.6.0-beta01 على عمليات الإيداع هذه.
يتضمّن هذا الإصدار بعض التحسينات الطفيفة على المستندات. يتطابق هذا الإصدار إلى حد كبير مع الإصدار 2.6.0-alpha02.
الإصدار 2.6.0-alpha02
21 أبريل 2021
تم طرح androidx.work:work-*:2.6.0-alpha02
. يحتوي الإصدار 2.6.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
تضيف هذه السمة إمكانية تشغيل Workers في أي عملية. (Iaf200)
تمت إضافة
RemoteCoroutineWorker
وهو تنفيذRemoteListenableWorker
يمكن ربطه بعملية بعيدة. (I30578)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية استخدام قيد الشبكة
TEMPORARILY_UNMETERED
. (I08d5e) - إتاحة استخدام عمليات متعددة في
setProgressAsync()
(Ib6d08) - اجعل
WorkManagerInitializer
متاحًا للجميع حتى تتمكّنandroidx.startup.Initializer
الأخرى من استخدامه كعنصر تابع. (I5ab11)
الإصدار 2.6.0-alpha01
24 مارس 2021
تم طرح androidx.work:work-*:2.6.0-alpha01
. يحتوي الإصدار 2.6.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
تستخدم مكتبة
WorkManager
الآنandroidx.startup
لإعداد WorkManager. في السابق، كان يتم ذلك من خلالandroidx.work.impl.WorkManagerInitializer
. (aosp/1608813)إذا كنت قد استخدمت
tools:node="remove"
فيContentProvider
المستخدَمة لتهيئة دورة حياة العملية في السابق، عليك اتّباع الخطوات التالية بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(أو)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
تغييرات واجهة برمجة التطبيقات
- أضِف واجهة برمجة تطبيقات
Result.getOutputData()
تعرضoutputData
الخاص بـ ListenableWorker. (Ie51e3)
إصلاح الأخطاء
- تمت إضافة حلّ بديل لخطأ في الشركة المصنّعة للمعدات الأصلية يؤدي إلى ظهور
SecurityException
عند استخدام واجهات برمجة التطبيقاتAlarmManager
. (aosp/1587518)
الإصدار 2.5.0
الإصدار 2.5.0
27 يناير 2021
تم طرح androidx.work:work-*:2.5.0
. يتضمّن الإصدار 2.5.0 عمليات الإيداع هذه.
التغييرات الرئيسية منذ الإصدار 2.4.0
- عنصر
:work:work-multiprocess
جديد للتطبيقات التي تستخدم عمليات متعددة يؤدي ذلك إلى تحسين الأداء من خلال توحيد عملية جدولة طلبات العمل في عملية واحدة.- لاستخدام
work-multiprocess
، حدِّد عنصرًا تابعًا لما يلي:implementation "androidx.work:work-multiprocess:2.5.0"
- حدِّد عملية أساسية باستخدام Configuration.Builder.setDefaultProcessName(String).
- عند استخدام
work-multiprocess
، عليك أيضًا استخدام RemoteWorkManager لإدارةWorkRequest
. يتواصل RemoteWorkManager دائمًا مع العملية المحدّدة. تعمل أداة الجدولة داخل العملية أيضًا في العملية المحدّدة.
- لاستخدام
- في بعض الأحيان، لا يمكن إنشاء مثيل
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 لاستهداف الإصدار 8 من Java (Ibd2f2)
الإصدار 2.5.0-beta02
2 ديسمبر 2020
تم طرح androidx.work:work-*:2.5.0-beta02
. يحتوي الإصدار 2.5.0-beta02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح خطأ في
androidx.work:work-multiprocess
حيث حظر WorkManager عن غير قصد سلسلة التعليمات التي يتم استدعاؤها عند محاولة الربط بالعملية المحدّدة. (aosp/1475538) - تم إصلاح الخلل الذي كان يؤدي إلى عدم تسوية
PeriodicWorkRequest
بشكل صحيح. (b/172475041، aosp/1489577) - تمت إضافة حلّ بديل لخطأ في النظام الأساسي عند إيقاف الخدمة التي تعمل في المقدّمة عند استخدام واجهات برمجة التطبيقات
setForeground*
. (b/170924044, aosp/1489901)
الإصدار 2.5.0-beta01
28 أكتوبر 2020
تم طرح androidx.work:work-*:2.5.0-beta01
. يحتوي الإصدار 2.5.0-beta01 على عمليات الإيداع هذه.
الميزات الجديدة
- يحدّ
WorkManager
تلقائيًا من عددWorkRequest
التي يمكن أن يلتقطها المجدول أثناء المعالجة. لا تزال الطلبات تُنفَّذ بترتيب 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
s لطلب البحث عنWorkInfo
s. (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
s التي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequests. لا يلتزمScheduler
الذي قيد التنفيذ أيضًا بحدود الجدولة (ولكنه يظلّ مقيّدًا بحجمExecutor
الذي يستخدمه WorkManager). وهذا يعني أنّه يمكن للتطبيق الآن تنفيذ عدد أكبر بكثير من WorkRequest عندما يكون التطبيق في المقدّمة. لإدارة تنفيذ العمل المؤجّل في المقدّمة، تقدّمWorkManager
أيضًاRunnableScheduler
جديدًا يمكن ضبطه. (aosp/1185778) - يتوافق WorkManager الآن مع RxJava 3. لاستخدام RxJava 3، يجب تضمين التبعية التالية:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - تمت إضافة إمكانية البحث عن
WorkInfo
باستخدامWorkQuery
. ويكون ذلك مفيدًا عندما يريد المطوّرون طلب البحث عنWorkInfo
من خلال مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder.fromStates(...)
أوWorkQuery.Builder. fromTags(...)
أوWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230, b/143847546) أضِف إمكانية طلب معلومات التشخيص من
WorkManager
باستخدام:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:
- WorkRequest التي تم إكمالها في آخر 24 ساعة
- WorkRequests التي يتم تنفيذها حاليًا.
- Scheduled WorkRequests (aosp/1235501)
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACE
التي تشبهAPPEND
، ولكنها تستبدل سلسلة تم إلغاؤها أو لم تستوفِ المتطلبات الأساسية. (b/134613984, aosp/1199640)توفير إمكانية إضافة
RunnableScheduler
مخصّص لتتبُّع WorkRequest التي يجب تنفيذها في المستقبل يتم استخدام هذا الخيار من قِبل "المجدول" أثناء المعالجة. (aosp/1203944)إضافة إمكانية إضافة مصانع ديناميكيًا للتفويض إليها عند استخدام
DelegatingWorkerFactory
(b/156289105, aosp/1309745)مواءمة التتبُّع مع قيود
BATTERY_NOT_LOW
بشكل أقرب إلى المنصة (aosp/1312583)تستخدم أداة الجدولة داخل العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويكون ذلك مفيدًا لدعم التطبيقات التي تستخدم عمليات متعددة بشكل أفضل. (aosp/1324732)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceType
المناسب عند استخدام واجهات برمجة التطبيقاتsetForegroundAsync()
(b/147873061، aosp/1215915) - تحديد أرقام تعريف JobScheduler التي يجب أن تستخدمها WorkManager عند استخدام واجهات برمجة تطبيقات JobService مباشرةً aosp/1223567
- تمت إضافة قاعدة تدقيق جديدة تضمن أنّ
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
- استخدام
سيتم الآن إرسال إشارة إلى المكالمات التي يتم إجراؤها إلى
setForegroundAsync()
والتي لا تكتمل قبل إكمالListenableWorker
من خلالIllegalStateException
فيListenableFuture
التي يتم عرضها. (aosp/1262743)تم إصلاح الخطأ الذي يتسبّب في عدم إيقاف
ForegroundService
بعد مقاطعةWorker
في المقدّمة. (b/155579898، aosp/1302153)إصلاح الخطأ الذي يحاول فيه
WorkManager
تنفيذ عدة مثيلات منWorker
المرتبط بخدمة تعمل في المقدّمة (b/156310133, aosp/1309853)
الإصدار 2.4.0-rc01
24 يونيو 2020
تم طرح androidx.work:work-*:2.4.0-rc01
. يحتوي الإصدار 2.4.0-rc01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تستخدم أداة الجدولة داخل العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويكون ذلك مفيدًا لدعم التطبيقات التي تستخدم عمليات متعددة بشكل أفضل. (aosp/1324732)
الإصدار 2.4.0-beta01
20 أيار (مايو) 2020
تم إصدار androidx.work:work-gcm:2.4.0-beta01
وandroidx.work:work-runtime:2.4.0-beta01
وandroidx.work:work-runtime-ktx:2.4.0-beta01
وandroidx.work:work-rxjava2:2.4.0-beta01
وandroidx.work:work-testing:2.4.0-beta01
. يحتوي الإصدار 2.4.0-beta01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يتسبّب في عدم إيقاف
ForegroundService
بعد مقاطعةWorker
في المقدّمة. (b/155579898، aosp/1302153) - إصلاح خطأ يؤدي إلى محاولة
WorkManager
تنفيذ عدة مثيلات منWorker
المرتبط بخدمة تعمل في المقدّمة (b/156310133، aosp/1309853) - إضافة إمكانية إضافة مصانع ديناميكيًا للتفويض إليها عند استخدام
DelegatingWorkerFactory
(b/156289105، aosp/1309745) - مواءمة التتبُّع مع قيود
BATTERY_NOT_LOW
بشكل أقرب إلى المنصة (aosp/1312583)
الإصدار 2.4.0-alpha03
29 نيسان (أبريل) 2020
تم طرح androidx.work:work-*:2.4.0-alpha03
. يحتوي الإصدار 2.4.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- يتوافق WorkManager الآن مع RxJava 3. لاستخدام RxJava 3، يجب تضمين التبعية التالية:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - تمت إضافة قاعدة تدقيق جديدة تضمن أنّ
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
تغييرات واجهة برمجة التطبيقات
- سيؤدي استدعاء
setProgressAsync()
بعد انتهاء تنفيذListenableWorker
إلى إرسال إشارةException
من خلالListenableFuture
. (aosp/1285494) - تم الآن وضع علامة
final
علىWorkQuery.Builder
. (aosp/1275037) - تمت إعادة تسمية طرق الإنشاء
WorkQuery.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
s باستخدام مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder withStates(...)
أوWorkQuery.Builder withTags(...)
أوWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)سيتم الآن إرسال إشارة إلى المكالمات التي يتم إجراؤها إلى
setForegroundAsync()
والتي لا تكتمل قبل إكمالListenableWorker
من خلالIllegalStateException
فيListenableFuture
التي يتم عرضها. (aosp/1262743)
إصلاح الأخطاء
- تم إصلاح قاعدة التدقيق التي تتحقّق من مُدد الفواصل الزمنية غير الصالحة لـ
PeriodicWorkRequest
. (aosp/1254846، b/152606442)
الإصدار 2.4.0-alpha01
4 مارس 2020
تم طرح androidx.work:work-*:2.4.0-alpha01
. يحتوي الإصدار 2.4.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
أصبحت أداة جدولة العمليات في
WorkManager
أكثر فعالية. في السابق، كان برنامج Scheduler الذي لا يزال قيد التنفيذ لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتم تأخيره والذي تم استيفاء قيوده. الآن، يتتبّع برنامج الجدولة قيد التنفيذWorkRequest
التي قد يتم تنفيذها في المستقبل، بما في ذلكPeriodicWorkRequest
. لا يلتزم Scheduler أثناء التنفيذ أيضًا بقيود الجدولة (ولكنّه يظلّ مقيّدًا بحجمExecutor
الذي يستخدمه WorkManager). وهذا يعني أنّ التطبيق يمكنه الآن تنفيذ المزيد منWorkRequest
عندما يكون التطبيق في المقدّمة. (aosp/1185778)تمت إضافة إمكانية طلب معلومات تشخيصية من WorkManager باستخدام
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:- WorkRequest التي تم إكمالها في آخر 24 ساعة
- WorkRequests التي يتم تنفيذها حاليًا.
- Scheduled WorkRequests (aosp/1235501)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceType
المناسب عند استخدام واجهات برمجة التطبيقاتsetForegroundAsync()
(b/147873061، aosp/1215915) - تحديد معرّفات
JobScheduler
التي يجب أن تستخدمهاWorkManager
عند استخدام واجهات برمجة التطبيقاتJobService
مباشرةً (aosp/1223567)
- استخدام
تغييرات واجهة برمجة التطبيقات
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACE
المشابهة لـAPPEND
، ولكن تستبدل سلسلة تم إلغاؤها أو لم تستوفِ المتطلبات الأساسية. (b/134613984, aosp/1199640)توفير إمكانية إضافة
RunnableScheduler
مخصّص لتتبُّعWorkRequest
التي يجب تنفيذها في المستقبل يتم استخدام هذا الخيار من قِبل "المجدول" أثناء المعالجة. (aosp/1203944)
إصلاح الأخطاء
- تم إيقاف
setProgress()
نهائيًا فيRxWorker
لأنّه كان يعرض سابقًاSingle<Void>
وهو نوع غير ممكن. تمت إضافة واجهة برمجة تطبيقات جديدةsetCompletableProgress()
تعرضCompletable
بدلاً من ذلك، كما تمت إضافة قواعد Lint جديدة تساعد في نقل البيانات إلى واجهات برمجة التطبيقات الجديدة. (b/150080946, aosp/1242665)
الإصدار 2.3.4
الإصدار 2.3.4
18 مارس 2020
تم طرح androidx.work:work-*:2.3.4
. يحتوي الإصدار 2.3.4 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح خطأ كان يتسبّب في تشغيل عدة مثيلات من
Worker
s التي تستغرق وقتًا طويلاً، وذلك بعد تجاوز فترة التنفيذ البالغة 10 دقائق. (aosp/1247484، b/150553353) - إصلاح الخطأ
IssueRegistry
في أداة lint الخاصة بمكتبة WorkManager نشكر @ZacSweers من Slack على مساهمته. (aosp/1217923)
الإصدار 2.3.3
الإصدار 2.3.3
4 مارس 2020
تم طرح androidx.work:work-*:2.3.3
. يحتوي الإصدار 2.3.3 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح الخلل الذي كان يؤدي إلى عدم إعادة جدولة
Worker
بشكل صحيح في حال حدوث انقطاع. (b/150325687، aosp/1246571)
الإصدار 2.3.2
الإصدار 2.3.2
19 شباط (فبراير) 2020
تم طرح androidx.work:work-*:2.3.2
. يحتوي الإصدار 2.3.2 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تتجاوز فيها WorkManager الحد الأقصى البالغ 100 مهمة في JobScheduler في حالات نادرة. (aosp/1226859، b/149092520)
- إصلاح مشكلة تداخل في ConstraintControllers. (aosp/1220100)
- تم تحسين إدارة مراحل نشاط الخدمة التي تعمل في المقدّمة الخاصة بـ "عمليات الخلفية" التي تستغرق وقتًا طويلاً. (aosp/1226295)
- تم تحسين إدارة إلغاء الإشعارات للعاملين الذين يعملون لفترة طويلة عند إلغاء العامل. (aosp/1228346)
الإصدار 2.3.1
الإصدار 2.3.1
5 شباط (فبراير) 2020
تم طرح androidx.work:work-*:2.3.1
. يحتوي الإصدار 2.3.1 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إدارة دورة حياة
Notification
بشكل أفضل بالنسبة إلىWorker
التي تعمل لفترة طويلة والتي يتم تشغيلها عندما يكونService
في المقدّمة نشطًا (aosp/1218539, b/147249312) - يعتمد
WorkManager
الآن على الإصدار الثابت منandroidx.sqlite:sqlite-framework:2.1.0
. (aosp/1217729) - تمت إضافة قواعد تدقيق لغوي لضمان تحديد
foregroundServiceType
فيAndroidManifest.xml
عند استخدامforegroundServiceType
فيForegroundInfo
. (aosp/1214207، b/147873061)
الإصدار 2.3.0
الإصدار 2.3.0
22 يناير 2020
تم إصدار androidx.work:work-*:2.3.0
بدون أي تغييرات منذ 2.3.0-rc01
. يحتوي الإصدار 2.3.0 على عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.2.0
- إتاحة تنفيذ المهام المهمة أو التي تستغرق وقتًا طويلاً من خلال
ListenableWorker#setForegroundAsync()
- إتاحة إمكانية تتبُّع تقدّم العامل من خلال
ListenableWorker#setProgressAsync()
- تتضمّن حزمة WorkManager الآن قواعد lint إضافية كجزء من المكتبة، ما يساعد في رصد الأخطاء في وقت مبكر.
الإصدار 2.3.0-rc01
8 كانون الثاني (يناير) 2020
تم طرح androidx.work:work-*:2.3.0-rc01
. يحتوي الإصدار 2.3.0-rc01 على عمليات الدمج التالية.
هذا الإصدار مطابق للإصدار 2.3.0-beta02
إصلاح الأخطاء
- يحدّد العنصر
work-testing
الآن تبعيةapi
علىwork-runtime-ktx
. (aosp/1194410)
الإصدار 2.3.0-beta02
18 كانون الأول (ديسمبر) 2019
تم طرح androidx.work:work-*:2.3.0-beta02
. يحتوي الإصدار 2.3.0-beta02 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة رسالة خطأ أفضل بشأن استثناءات SQLite غير القابلة للاسترداد. (aosp/1185777)
- تمت إضافة قاعدة lint تضمن إزالة موفّر المحتوى
androidx.work.impl.WorkManagerInitializer
منAndroidManifest.xml
عند استخدام عملية التهيئة عند الطلب. (aosp/1167007) - تمت إضافة تحذير lint عند استخدام
enqueue()
لـPeriodicWorkRequest
بدلاً منenqueueUniquePeriodicWork()
. (aosp/1166032)
تغييرات واجهة برمجة التطبيقات
- يتطلّب منك
ForegroundInfo
الآن تحديدnotificationId
المطلوب استخدامه عند استخدامListenableWorker.setForegroundAsync()
. هذا تغيير قد يؤدي إلى عطل. يتيح لك ذلك تنفيذ عدةWorker
s طويلة الأمد بشكل متوازٍ. تعملWorkManager
أيضًا على إدارة مدة صلاحيةNotification
المقدَّمة بشكل أفضل. (b/145473554 وaosp/1181208 وasop/1181216 وasop/1183577)
إصلاح الأخطاء
- تم إصلاح خطأ في تنفيذ AlarmManager حيث لم يتم تنظيف المنبّهات بشكل صحيح. (aosp/1156444)
- تم إصلاح الخطأ الذي كان يتسبب في إنشاء سلسلة
WorkContinuation
غير صحيحة عند توفّر قائمة فارغة منWorkRequest
. (b/142835274، aosp/1157051)
التغييرات في التبعيات
- يستخدم WorkManager الآن الإصدار 2.2.2 من Room.
الإصدار 2.3.0-beta01
20 تشرين الثاني (نوفمبر) 2019
تم طرح androidx.work:work-*:2.3.0-beta01
. يحتوي الإصدار 2.3.0-beta01 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة قاعدة تدقيق جديدة تمنع حدوث أخطاء من المطوّرين بسبب التنفيذ غير الصحيح لـ
androidx.work.Configuration.Provider
عند استخدام عملية الإعداد عند الطلب. aosp/1164559
الإصدار 2.3.0-alpha03
23 تشرين الأول (أكتوبر) 2019
تم طرح androidx.work:work-*:2.3.0-alpha03
. يحتوي الإصدار 2.3.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة واجهة برمجة التطبيقات
WorkManager.createCancelPendingIntent()
التي تسهّل إلغاءWorkRequest
بدون الحاجة إلى تسجيل مكوّن آخر فيAndroidManifest.xml
. تسهّل واجهة برمجة التطبيقات هذه إلغاءWorkRequest
منNotification
بشكل خاص. نتوقّع أن يتم إقران ذلك بواجهات برمجة التطبيقات الجديدة التي تعمل في المقدّمة في الإصدار 2.3.0. - يعتمد WorkManager الآن على الإصدار الثابت من
androidx.room:*:2.2.0
.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
ForegroundInfo.getNotificationType()
إلىForegroundInfo.getForegroundServiceType()
ليكون الاسم أكثر اتساقًا مع واجهات برمجة التطبيقات الأساسية للمنصة. (b/142729893، aosp/1143316)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تسبّب فيه طلب غير ضروري إلى
setTransactionSuccessful()
خارج إطار المعاملة. يحدث ذلك في عمليات نقل البيانات النادرة. (b/142580433، aosp/1141737)
الإصدار 2.3.0-alpha02
9 أكتوبر 2019
تم طرح androidx.work:work-*:2.3.0-alpha02
. يحتوي الإصدار 2.3.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
- يتيح WorkManager الآن تنفيذ مهام طويلة الأمد أو مهمة يجب أن يبقيها نظام التشغيل نشطة. لمزيد من المعلومات، يُرجى الاطّلاع على
ListenableWorker#setForegroundAsync()
(أوCoroutineWorker#setForeground()
للغة Kotlin). (aosp/1133636)
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية واجهة برمجة التطبيقات
containsKey
فيData
إلىhasKeyWithValueOfType
. تم أيضًا إعادة تسمية طريقة الإضافة المقابلة في مكتبةktx
. (b/141916545)
إصلاح الأخطاء
- يجدول WorkManager العمل بشكل عادل عندما يقترب عدد
WorkRequest
s التي تمت إضافتها إلى قائمة الانتظار من حدود الجدولة. (aosp/1105766) - لا يستدعي WorkManager الدالة
ListenableWorker#onStopped()
إلا إذا لم تكن المهمة قد اكتملت من قبل. (b/140055777) - يزيل WorkManager الآن معلومات التقدّم عندما يتم إيقاف عامل أو يصل إلى حالته النهائية. (aosp/1114572)
- أصبح
Data
يتضمّن الآنtoString()
تمثيلاً أكثر فائدة. (b/140945323) - تتضمّن
Data
الآن طريقةequals()
أفضل. يتيح هذا الحقل أيضًا استخدامdeepEquals
لأنواعArray
. (b/140922528) - يخزّن WorkManager الآن قاعدة البيانات الداخلية وملفات الإعدادات المفضّلة في دليل لا يتضمّن نُسخًا احتياطية. (b/114808216)
الإصدار 2.3.0-alpha01
22 أغسطس 2019
تم طرح androidx.work:work-*:2.3.September 5, 20190-alpha01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- يمكن الآن لـ
ListenableWorker
ضبط مستوى التقدّم من خلال واجهة برمجة التطبيقاتsetProgressAsync()
. تمت أيضًا إضافة واجهة برمجة تطبيقاتsuspend
-ingsetProgress
API مقابلة فيCoroutineWorker
وsetProgress
فيRxWorker
تعرضSingle<Void>
. باستخدام واجهات برمجة التطبيقات الجديدة هذه، يمكن للعاملين نقل معلومات التقدم عبرWorkInfo
التي تتضمّن واجهة برمجة تطبيقاتgetProgress
مقابلة. (b/79481554) - يحتوي
Data
على واجهة برمجة تطبيقاتcontainsKey()
يمكن استخدامها للتحقّق من أنّ بيانات الإدخال إلىWorker
تحتوي على مفاتيح من النوع المتوقّع. (b/117136838) - يمكن الآن تسلسل
Data
باستخدامData.toByteArray()
وData.fromByteArray()
. يُرجى العِلم أنّه لا تتوفّر أي ضمانات بشأن تحديد الإصدارات باستخدامData
، لذا يجب عدم الاحتفاظ به أو استخدامه في عملية الاتصال بين العمليات (IPC) بين التطبيقات. ولا يمكن استخدامها بأمان إلا بين عمليات متعددة من التطبيق نفسه. - تمت إضافة إمكانية تحديد
InputMergerFactory
من خلالConfiguration.setInputMergerFactory
. (b/133273159)
تغييرات واجهة برمجة التطبيقات
- ستعرض WorkManager مثيلاً من
IllegalStateException
إذا عرضتWorkerFactory
مثيلاً منListenableWorker
تم استدعاؤه سابقًا. (b/139554406) - تعديلات على المستندات حول إلغاء
ListenableFuture
ووظيفةonStopped()
فيListenableWorker
(b/138413671)
إصلاح الأخطاء
- يتجاهل Scheduler أثناء المعالجة الآن
WorkRequest
s مع القيدidle
. لن يرصدJobScheduler
هذه الطلبات إلا عندما يكون الجهازidle
. (aosp/1089779) - تستخدم
TestScheduler
الآنExecutor
المحدّدة بشكلٍ صحيح لتنفيذ المهام الداخلية في الاختبارات. (aosp/1090749)
الإصدار 2.2.0
الإصدار 2.2.0
15 أغسطس 2019
تم طرح androidx.work:work-*:2.2.0
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.2.0-rc01
.
التغييرات المهمة في الإصدار 2.2.0 مقارنةً بالإصدار 2.1.0
androidx.work:work-gcm:2.2.0
هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كأداة جدولة عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات <= 22. هذه تبعية اختيارية تساعد في إجراء معالجة أكثر موثوقية وفعالية في الخلفية على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذه التبعية إلى ملف Gradle للحصول على دعم GCMNetworkManager تلقائيًا. إذا لم تكن "خدمات Play" متاحة، سيستمر WorkManager في استخدام AlarmManager على الأجهزة القديمة.
الإصدار 2.2.0-rc01
30 يوليو 2019
تم طرح androidx.work:work-*:2.2.0-rc01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خطأ في تنفيذ AlarmManager يؤدي إلى إيقاف الخدمة قبل الأوان، ما يؤدي إلى حدوث
RejectedExecutionException
في حالات نادرة. (aosp/1092374) (b/138238197). - تمت إضافة حلّ بديل لحدوث
NullPointerException
عند استخدام واجهات برمجة التطبيقاتJobScheduler
على بعض الأجهزة. (aosp/1091020) (b/138364061)، (b/138441699)
الإصدار 2.2.0-beta02
19 يوليو 2019
تم طرح androidx.work:work-*:2.2.0-beta02
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تمت إزالة تبعية jacoco غير المقصودة التي تم تقديمها في
2.2.0-beta01
.
الإصدار 2.2.0-beta01
17 تموز (يوليو) 2019
تم طرح androidx.work:work-*:2.2.0-beta01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
-
androidx.work:work-gcm:2.2.0-beta01
هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كأداة جدولة عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات <= 22. هذه تبعية اختيارية تساعد في إجراء معالجة أكثر موثوقية وأداءً في الخلفية على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذه التبعية إلى ملف Gradle للحصول على دعم GCMNetworkManager تلقائيًا. إذا لم تكن "خدمات Play" متاحة، سيستمر WorkManager في استخدام AlarmManager على الأجهزة القديمة.
إصلاح الأخطاء
- إصلاح الخطأ
IllegalArgumentException
عند تتبُّع حالة الشبكة على أجهزة Nvidia Shield K1 اللوحية (aosp/1010188)
الإصدار 2.1.0
الإصدار 2.1.0
11 تموز (يوليو) 2019
تم طرح androidx.work:work-*:2.1.0
. هذا الإصدار مطابق للإصدار androidx.work:work-*:2.1.0-rc01
.
التغييرات المهمة منذ الإصدار 2.0.1
- يتطلّب
work-runtime-ktx
الآن Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلىbuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- تمت إضافة عملية تهيئة عند الطلب لـ WorkManager، ما يؤدي إلى إنشاء WorkManager
فقط عند الإشارة إليه. b/127497100 لإعداد مشروعك من أجل عملية الإعداد عند الطلب، اتّبِع الخطوات التالية:
- أوقِف أداة التهيئة التلقائية.
- نفِّذ
Configuration.Provider
على عنصرApplication
المخصّص. - تغيير كل مراجع
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
وكجزء من هذا التغيير، أوقفنا نهائيًاWorkManager.getInstance()
. من الأفضل دائمًا استبدال الرمز القديم بالرمز الجديد، حتى إذا لم تكن بصدد إجراء عملية تهيئة عند الطلب.WorkManager.getInstance(Context)
- تتيح
PeriodicWorkRequest
الآن إمكانية ضبط تأخيرات أولية. يمكنك استخدام طريقةsetInitialDelay
علىPeriodicWorkRequest.Builder
لضبط تأخير أولي. b/111404867 - تمت إضافة إمكانية التفويض إلى
WorkerFactory
واحد أو أكثر منWorkerFactory
المسجّلة باستخدامDelegatingWorkerFactory
. b/131435993 - تمت إضافة إمكانية تخصيص
Executor
الذي يستخدمه WorkManager في جميع عمليات حفظ البيانات الداخلية من خلالConfiguration.Builder.setTaskExecutor
. - تمت إضافة إمكانية إنشاء فئتَي
Worker
وListenableWorker
قابلة للاختبار باستخدام الوحدات من خلال استخدامTestWorkerBuilder
وTestListenableWorkerBuilder
في العنصرwork-testing
.- يُرجى العِلم أنّ
work-testing
يجلب الآن Kotlin كعنصر تابع ويتضمّن عدة إضافات Kotlin تلقائيًا.
- يُرجى العِلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo
. b/127290461 - يمكن الآن تخزين واسترداد وحدات البايت ومصفوفات البايت في أنواع
Data
. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData
. - تعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه أن يحلّ بعض مشاكل قاعدة البيانات.
الإصدار 2.1.0-rc01
27 يونيو 2019
تم طرح androidx.work:work-*:2.1.0-rc01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى تعطُّل التطبيق عند تنفيذ المهام باستخدام
JobScheduler
أثناء إجراء عملية نسخ احتياطي b/135858602.
الإصدار 2.1.0-beta02
20 يونيو 2019
تم طرح androidx.work:work-*:2.1.0-beta02
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تستخدِم
TestListenableWorkerBuilder
الآنWorkerFactory
الصحيح عند إنشاء مثيلات منListenableWorker
. b/135275844 - تم إصلاح الخلل الذي تسبّب في حدوث انحرافات في نوافذ التنفيذ الخاصة بـ
WorkRequest
بسبب توقّف العملية. b/135272196
الإصدار 2.1.0-beta01
13 حزيران (يونيو) 2019
تم طرح androidx.work:work-*:2.1.0-beta01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه أن يحلّ بعض مشاكل قاعدة البيانات. - تمت إزالة بعض عمليات الإدخال والإخراج الخاصة بقرص بدء التشغيل من سلسلة التعليمات الرئيسية.
- تم إصلاح مشكلة محتملة في تعذُّر إكمال عملية تتبُّع القيود. b/134361006
- تم إلغاء المهام غير الصالحة بشكل استباقي والتي تم إسنادها إلى WorkManager. b/134058261
- تمت إضافة بعض الاستدعاءات الدفاعية إلى واجهات برمجة التطبيقات JobScheduler للأجهزة التي لا تعمل بشكل صحيح.
الإصدار 2.1.0-alpha03
5 يونيو 2019
تم طرح androidx.work:*:2.1.0-alpha03
.
إصلاح الأخطاء
- تحسين المستندات الخاصة بـ
PeriodicWorkRequest
- يستخدم
WorkManagerTestInitHelper
الآن منفِّذ الخلفية الصحيح للاختبارات. - إصلاحات لمشاكل SQLite عند التعامل مع معاملات كبيرة على بعض الأجهزة (b/130182503)
- أصبحت تبعيات WorkManager أكثر دقة. (b/133169148).
- حلّ المشاكل الخاصة بمصنّع المعدات الأصلية في تنفيذ
JobScheduler
عند جدولة المهام باستخدام WorkManager - تحسينات في أداة الجدولة المستندة إلى AlarmManager بشأن مدة بقاء الخدمة التي كانت تتسبّب سابقًا في حدوث أعطال نادرة. (b/133313734)
الإصدار 2.1.0-alpha02
16 أيار (مايو) 2019
تم إصدار WorkManager 2.1.0-alpha02. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة.
تغييرات واجهة برمجة التطبيقات
تتيح
PeriodicWorkRequest
الآن إمكانية ضبط تأخيرات أولية. يمكنك استخدام طريقةsetInitialDelay
علىPeriodicWorkRequest.Builder
لضبط تأخير أولي. b/111404867تمت إضافة إمكانية التفويض إلى
WorkerFactory
واحد أو أكثر منWorkerFactory
المسجّلة باستخدامDelegatingWorkerFactory
. b/131435993تمت إضافة إمكانية تخصيص
Executor
الذي يستخدمه WorkManager في جميع عمليات حفظ البيانات الداخلية من خلالConfiguration.Builder.setTaskExecutor
.تحسين المستندات حول
WorkRequest.keepResultsForAtLeast
(b/130638001) والتهيئة عند الطلب وPeriodicWorkRequest.Builder
(b/131711394).
الإصدار 2.1.0-alpha01
24 أبريل 2019
تم إصدار 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
s للإشارة إلى أنّ وقت العمل المرن غير متاح على الإصدار 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
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
الإصدار 1.0.1
الإصدار 1.0.1
9 نيسان (أبريل) 2019
تم إصدار WorkManager 1.0.1. هذا الإصدار مطابق للإصدار 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
05 مارس 2019
هذا هو الإصدار الثابت 1.0.0 من WorkManager. هذا الإصدار من WorkManager مطابق للإصدار 1.0.0-rc02.
الإصدار 1.0.0-rc02
21 شباط (فبراير) 2019
هذا هو الإصدار الثاني المحتمَل من الإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحَين للأخطاء.
إصلاح الأخطاء
تم الآن تحديد مواعيد
Worker
بشكل صحيح بعد تعطُّل التطبيق. b/124546316تم الآن تصنيف
Worker
التي تعرضException
غير معالَج بشكل صحيح على أنّهاFAILED
، ولم تعُد تتسبّب في تعطُّل عملية التطبيق.
الإصدار 1.0.0-rc01
14 شباط (فبراير) 2019
هذا هو الإصدار المحتمَل للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحًا لخطأ واحد.
إصلاح الأخطاء
- يتوافق التنفيذ المستند إلى AlarmManager الآن بشكل صحيح مع
flex
windows بالنسبة إلى PeriodicWorkRequests. b/124274584
الإصدار 1.0.0-beta05
6 شباط (فبراير) 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة تم فيها استخدام
JobScheduler.getPendingJob(...)
على الإصدار 23 من واجهة برمجة التطبيقات. b/123893059 - تم إصلاح
NullPointerException
على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/123835104
الإصدار 1.0.0-beta04
4 شباط (فبراير) 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم تحسين جدولة PeriodicWork لتنفيذ AlarmManager المستند إلى التنفيذ.
- تم إصلاح حالة لم يتمكّن فيها WorkManager من تتبُّع القيود بشكل صحيح عند استخدام التنفيذ المستند إلى AlarmManager. b/123379508
- تم إصلاح حالة تعذّر فيها على WorkManager إعادة محاولة تنفيذ العمل عند إيقاف العملية بشكل إجباري عند استخدام التنفيذ المستند إلى AlarmManager. b/123329850
- تم إصلاح حالة كانت تتسبّب في تسرُّب Wakelocks في WorkManager عند استخدام التنفيذ المستند إلى AlarmManager.
الإصدار 1.0.0-beta03
25 يناير 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- لقد أطلقنا إصدارًا قديمًا
1.0.0-beta02
تسبّب في عدم تنفيذ العمل بشكل صحيح في بعض الحالات. b/123211993 - تم إصلاح مشكلة عدم الالتزام بشكل صحيح بتوقيت التراجع عن العمل. b/122881597
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات أو إصدار أقدم). هذا استمرار للإصلاح في1.0.0-beta02
. b/121345393 - تمت إضافة
exported=false
إلى بعض المكوّنات في ملف البيان التي كانت تفتقر إلى هذه التعليق التوضيحي. - تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في المستندات على مستوى الحزمة.
الإصدار 1.0.0-beta02
15 كانون الثاني (يناير) 2019
يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة استخدام نادرة كان من الممكن أن يتم فيها تنفيذ العمل الدوري أكثر من مرة في كل فاصل زمني على الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات). b/121998363
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/121345393 - تم إصلاح مشكلة التنفيذ الخاطئ للعمل عندما لا يتم استيفاء القيود على الأجهزة التي تعمل بالإصدار 5.1 (المستوى 22 لواجهة برمجة التطبيقات) من نظام التشغيل Android أو الإصدارات الأقدم. b/122578012
- تم تحسين طريقة إكمال العمل لتكون أسرع في بعض الحالات الحدّية. b/122358129
- تمت إضافة تغيير لمعالجة حالات التزامن المحتملة بين مثيلات متعددة من
LiveData
التي يستخدمها WorkManager. - تم الانتقال إلى استخدام التبعية
Room
بدلاً من1.1.1-rc01
، وهاتان النسختان متطابقتان. b/1225780111.1.1
الإصدار 1.0.0-beta01
19 كانون الأول (ديسمبر) 2018
لا يتضمّن هذا الإصدار أي تغييرات في واجهة برمجة التطبيقات، ومن المتوقّع أن يظل WorkManager متوافقًا مع واجهة برمجة التطبيقات حتى الإصدار التالي ما لم تحدث مشكلة خطيرة. يتضمّن هذا الإصدار بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- لن يتم تشغيل مهام الأطفال التي تم إلغاؤها سابقًا والتي أكملها الوالد بنجاح. b/120811767
- فئات تسجيل الدخول التي تمّت تهيئتها بشكل صحيح (تظهر بشكل أساسي أثناء الاختبارات)
الإصدار 1.0.0-alpha13
12 ديسمبر 2018
يتضمّن هذا الإصدار تغييرًا بسيطًا في واجهة برمجة التطبيقات سيكون مفيدًا لبعض مستخدمي Kotlin.
تغييرات واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
ليصبح فئة داخلية منListenableWorker
. يمنع ذلك حدوث تعارضات إعادة البناء مع فئةResult
ذات المستوى الأعلى في Kotlin. هذا تغيير مهم في واجهة برمجة التطبيقات. b/120564418
التغييرات غير المتوافقة في واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
ليصبح فئة داخلية منListenableWorker
.
الإصدار 1.0.0-alpha12
5 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار بعض التغييرات التي قد تؤدي إلى أعطال في واجهة برمجة التطبيقات. يُرجى الاطّلاع على القسم التغييرات التي قد تؤدي إلى أعطال في واجهة برمجة التطبيقات أدناه. من المرجّح أن يتم طرح هذا الإصدار كأول إصدار تجريبي. يتضمّن الإصدار alpha12
أيضًا تعديلات شاملة على المستندات.
تغييرات واجهة برمجة التطبيقات
- يقدّم عنصر جديد،
work-rxjava2
، الميزةRxWorker
. هذهListenableWorker
تتوقّعSingle<Payload>
. - تمت إزالة إمكانية استخدام Firebase JobDispatcher بسبب إيقافها نهائيًا قريبًا. وهذا يعني أنّه لن يتم تعديل العنصر
work-firebase
مع اقتراب موعد الإصدار التجريبي. وسنبحث في إمكانية إضافة خيار بديل في المستقبل. - تم دمج
Payload
فيResult
. أصبحتResult
الآن "فئة محكمة الإغلاق" تتضمّن ثلاث عمليات تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. تؤديListenableFuture
الآن إلى ظهورResult
بدلاً منPayload
. لا تتضمّنWorker
طرقًا للحصول على القيمة وتعيينها للإخراجData
. هذا تغيير قد يؤدي إلى عطل. - تمت إضافة
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
وخيارات لدعم عناوين URI للمحتوى التي يتم تشغيلها ببطء. b/119919774 - تمت إضافة خيار
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. تتطلّب هذه الطريقة استخدام الإصدار 26 من واجهة برمجة التطبيقات. - تمت إضافة طريقتَي الإضافة
Operation.await()
وListenableFuture.await()
في Kotlin. - تمت إعادة تسمية "
Operation.getException()
" إلى "Operation.getThrowable()
". هذا تغيير قد يؤدي إلى عطل. - لم يعُد بإمكان الجميع استخدام الفئة
ContentUriTriggers
والطُرق التي تشير إليها. هذا تغيير قد يؤدي إلى عطل. - تمت إزالة بقية طرق varargs في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإنشاء، يمكنك تضمين varargs الحالية فيArrays.asList(...)
. سنظل نضمّن إصدارات ذات وسيط واحد لكل طريقة. هذا تغيير قد يؤدي إلى عطل. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
خيارات. كانوا يعرضون واجهة برمجة تطبيقات مربكة، فالطُرق الحاليةcombine
أسهل للفهم. هذا تغيير قد يؤدي إلى عطل.
إصلاح الأخطاء
- أصبحت عمليات التنفيذ السابقة لإصدار Marshmallow أكثر موثوقية في استعادة المهام التي تم إيقافها بسبب توقّف العملية.
- يتم تتبُّع
LiveData
الذي يتم رصده من خلالobserveForever
باستخدام WorkManager. هذه عملية نقل إصلاح من مكتبة Room إلى إصدار أقدم. b/74477406 - يطرح
Data.Builder.build()
الآن استثناءً إذا تجاوز حجم العنصر المتسلسل الحدّ الأقصى. في السابق، كان ذلك يحدث فقط في سلسلة الخلفية حيث لا يمكنك التعامل معه بشكل صحيح. - تم التمييز بشكل أكبر بين العمل المتوقّف والعمل الملغى، إذ ستعرض
getWorkInfoById()
WorkInfo
معCANCELLED
State
خلالListenableWorker.onStopped()
. - اعتبار
null
Result
s حالات تعذُّر فيListenableWorker
b/120362353 - إصلاح تجريبي لأجهزة Shield Tablet التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات والتي كانت تعرض أحيانًا الخطأ
IllegalArgumentException
. b/119484416
التغييرات غير المتوافقة في واجهة برمجة التطبيقات
- تمت إزالة إمكانية استخدام Firebase JobDispatcher بسبب إيقافها نهائيًا قريبًا. وهذا يعني أنّه لن يتم تعديل العنصر
work-firebase
مع اقتراب موعد الإصدار التجريبي. وسنبحث في إمكانية إضافة خيار بديل في المستقبل. - تم دمج
Payload
فيResult
. أصبحتResult
الآن "فئة محكمة الإغلاق" تتضمّن ثلاث عمليات تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. تؤديListenableFuture
الآن إلى ظهورResult
بدلاً منPayload
. لا تتضمّنWorker
طرقًا للحصول على القيمة وتعيينها للإخراجData
. - تمت إضافة طريقتَي الإضافة
Operation.await()
وListenableFuture.await()
في Kotlin. - تمت إعادة تسمية "
Operation.getException()
" إلى "Operation.getThrowable()
". - لم يعُد بإمكان الجميع استخدام الفئة
ContentUriTriggers
والطُرق التي تشير إليها. - تمت إزالة بقية طرق varargs في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإنشاء، يمكنك تضمين varargs الحالية فيArrays.asList(...)
. سنظل نضمّن إصدارات ذات وسيط واحد لكل طريقة. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
خيارات. كانوا يعرضون واجهة برمجة تطبيقات مربكة، فالطُرق الحاليةcombine
أسهل للفهم.
الإصدار 1.0.0-alpha11
8 نوفمبر 2018
يحتوي هذا الإصدار على العديد من التغييرات التي ستصبح واجهة برمجة تطبيقات ثابتة في beta
.
يتضمّن هذا الإصدار تغييرات على واجهة برمجة التطبيقات قد تؤدي إلى أعطال. يُرجى الاطّلاع على القسم التغييرات على واجهة برمجة التطبيقات التي قد تؤدي إلى أعطال أدناه.
تغييرات واجهة برمجة التطبيقات
work-runtime-ktx
يقدّمCoroutineWorker
جديدًا.- تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمت إعادة تسمية جميع صيغ الطريقةgetStatus
لتصبح صيغgetWorkInfo
المقابلة. هذا تغيير قد يؤدي إلى عطل. - لم يعُد
ListenableWorker.onStopped()
يقبل وسيطة منطقية تمثّل ما إذا تم إلغاءWorkRequest
. لم يعُدWorkManager
يميّز بينهما. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية حزمة
androidx.work.test
لتصبح حزمةandroidx.work.testing
. هذا تغيير قد يؤدي إلى عطل. - لم تعُد أدوات الضبط في
Constraints
جزءًا من واجهة برمجة التطبيقات العامة. هذا تغيير قد يؤدي إلى عطل. - كانت الدالتان
WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
تعرضان في السابق مصفوفات. الآن، تُرجع هذه الطرق "مجموعات". هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. هذا تغيير قد يؤدي إلى عطل. - لم يعُد المنشئ الخاص بـ
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. هذا تغيير قد يؤدي إلى عطل. - تمت إضافة العديد من التعليقات التوضيحية
@NonNull
إلى واجهة برمجة التطبيقات العامة لتحسين سهولة استخدامها. - أضِف
WorkManager.enqueueUniqueWork()
API إلى قائمة انتظارOneTimeWorkRequest
s الفريدة بدون الحاجة إلى إنشاء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
s.WorkManager.getStatus*LiveData()
عملية إرجاعLiveData
.
الإصدار 1.0.0-alpha09
19 سبتمبر 2018
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف واحد يتضمّن المسار المستقل عن نظام التشغيل META-INF/proguard/androidx-annotations.pro"، يُرجى وضع ما يلي في ملف Gradle كحلّ مؤقت ريثما نحلّ المشكلة في الإصدار alpha10:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة إصلاح آخر كان مطلوبًا لحلّ الخطأ "100 مهمة". b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب حالات التزامن. b/114705286
- يتم تفويض مكالمات
ConstraintTrackingWorker.onStopped(boolean)
إلىWorker
الأساسي. b/114125093 - فرض الحد الأدنى الصحيح لتأخير التراجع في Firebase JobDispatcher b/113304626
- تحسينات على ضمانات سلاسل المحادثات الداخلية في المكتبة
- تم تصحيح مشكلة محتملة في إزالة التكرار
LiveData
داخليًا.
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء مثيلات
Worker
خاصة بك في وقت التشغيل عن طريق تحديدWorkerFactory
كجزء منWorkManager.Configuration
. المصنع الاحتياطي هوDefaultWorkerFactory
، وهو يتطابق مع سلوك الإصدارات السابقة من WorkManager.- تم الآن وضع علامة "متوقّف نهائيًا" على أدوات الإنشاء التلقائية للفئتَين
Worker
وNonBlockingWorker
. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)
) واستدعاءsuper(Context, WorkerParameters)
، لأنّ الإصدارات المستقبلية من WorkManager ستزيل الدالة الإنشائية التلقائية.
- تم الآن وضع علامة "متوقّف نهائيًا" على أدوات الإنشاء التلقائية للفئتَين
- لقد بدأنا استخدام العنصر الجديد
ListenableFuture
داخليًا (بدون تبعيات Guava). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيساعد هذا التغيير في إتاحة إظهارNonBlockingWorker
في النهاية. - إضافة إمكانية بدء العمل المحدّد بوقت في
TestDriver
من خلالTestDriver.setInitialDelayMet(UUID)
وTestDriver.setPeriodDelayMet(UUID)
b/113360060
التغييرات التي قد تؤدي إلى أعطال
- تم إيقاف الدالتَين الإنشائيتَين التلقائيتَين
Worker
وNonBlockingWorker
نهائيًا. يُرجى نقل البيانات إلى أداة الإنشاء الجديدة في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية الدالة الإنشائية التلقائية.
الإصدار 1.0.0-alpha08
27 أغسطس 2018
إصلاح الأخطاء
- تم تصنيف مكونات WorkManager بشكل صريح على أنّها غير متوافقة مع ميزة "التشغيل المباشر"، وبالتالي لا يتم تشغيلها أثناء استخدام هذه الميزة. في المستقبل، سنوفّر إصدارًا من WorkManager متوافقًا مع ميزة "التشغيل المباشر". b/112665532
- تم إصلاح مشكلة عدم تنفيذ العمل الذي تمت إعادة محاولته. b/112604021
- تم إصلاح مشكلة عدم تنفيذ العمل الدوري بشكل متكرّر (مرتبطة بالمشكلة أعلاه). b/112859683
- سياسات التراجع التي يتم الالتزام بها عندما تكون عملية التطبيق قيد التشغيل.
- تم تصحيح رسائل الاستثناء في
Data
للإشارة إلى أنّ الحد الأقصى هو 10 كيلوبايت. - تم خفض الحدّ الأقصى لقيمة
Configuration.setMaxSchedulerLimit(int)
إلى 50 لتفسير بعض حالات التأخّر في إكمال معالجةJobScheduler
. b/112817355
الإصدار 1.0.0-alpha07
16 أغسطس 2018
إصلاح الأخطاء
- تم إصلاح استعلام SQL محتمل يتضمّن حدودًا سالبة يمكن أن يعرض عددًا غير محدود من النتائج.
- يؤدي الآن العمل الذي انتهى تنفيذه إلى إلغاء جميع النُسخ المعلقة من هذا العمل بشكل صحيح في أدوات الجدولة الأخرى. أدّى ذلك إلى تجاوز الحدّ الأقصى المسموح به والبالغ
JobScheduler
مهمة. b/111569265 - تم إصلاح
ConcurrentModificationException
فيConstraintTracker
. b/112272753 - تم تغيير تعليقات توضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229
تغييرات واجهة برمجة التطبيقات
- توسّع
Worker
الآن ليشمل فئة جديدة، وهيNonBlockingWorker
. ولا يؤثّر ذلك في أي استخدام حالي. في المستقبل، سيصبحNonBlockingWorker
عنصرًا متوافقًا تمامًا مع حلول سلاسل المحادثات المخصّصة. - تم تغيير تعليقات توضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229 - إضافات Kotlin: تم إيقاف
Map.toWorkData()
نهائيًا وإضافةworkDataOf(vararg Pair<String, Any?>)
على مستوى أعلى لتكون أكثر اتساقًا مع واجهات برمجة التطبيقات الحالية.
الإصدار 1.0.0-alpha06
1 أغسطس 2018
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل b/111801342
- تم إصلاح الخطأ الذي يتسبّب في عدم تشغيل
PeriodicWork
في الموعد المحدّد عندما يكون الجهاز في وضع "السكون". b/111469837 - إصلاح مشكلة تزامن عند تتبُّع القيود تؤدي إلى تعطُّل
WorkManager
. googlecodelabs/android-workmanager/issues/56 - أنشئ
WorkRequest
فريدًا عند استخدامWorkRequest.Builder#build()
. b/111408337 - فعِّل استخدام
RescheduleReceiver
فقط عندما تكون هناكWorkRequest
تتطلّب ذلك. b/111765853
الإصدار 1.0.0-alpha05
24 يوليو 2018
تغييرات واجهة برمجة التطبيقات
- تمت إضافة التعليق التوضيحي
@NonNull
إلىWorkManager.getInstance()
بدلاً من@Nullable
. بدلاً من ذلك، إذا لم يتم تهيئة العنصر الفردي بشكل صحيح في حالات التهيئة اليدوية، سيعرض الإجراءIllegalStateException
. هذا التغيير على واجهة برمجة التطبيقات هو تغيير غير متوافق مع الإصدارات السابقة. - تمت إضافة واجهة برمجة تطبيقات جديدة،
Configuration.Builder.setMinimumLoggingLevel(int)
، يمكنها التحكّم في مستوى تفصيل WorkManager. تسجّل WorkManager تلقائيًا رسائل الخطأLog.INFO
أو أعلى. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية (تكونnull
ضمنيًا). هذا تغيير غير متوافق في واجهة برمجة التطبيقات. - تم وضع العلامة
@hide
على بعض الطرق التي لا يمكن استخدامها إلا داخليًا. ويشمل ذلك أداة إنشاءConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
. هذا التغيير قد يؤدي إلى عطل في واجهة برمجة التطبيقات.
إصلاح الأخطاء
- لم يعُد WorkManager ينفّذ العمل أثناء الحالات المعروفة للنسخ الاحتياطي التلقائي. وقد أدّى ذلك إلى حدوث عُطل. b/110564377
- تم إصلاح مشكلة الجدولة المزدوجة لـ
PeriodicWorkRequest
عند استخدامJobScheduler
. b/110798652 - تم إصلاح مشكلة عدم تنفيذ
PeriodicWorkRequest
بشكلٍ صحيح بعد وضع الجهاز في وضع "السكون". b/111469837 - تم إصلاح مشكلة التأخيرات الأولية عند استخدام Firebase JobDispatcher. b/111141023
- تم إصلاح بعض المشاكل المحتملة المتعلقة بالتزامن والتوقيت.
- تمت إزالة
BroadcastReceiver
s التي لم يعُد هناك حاجة إليها بشكل صحيح. - تحسين أداء إعادة الجدولة عند إعادة تشغيل التطبيقات بعد فرض إغلاقها
- يجب أن يكون من الممكن استدعاء
TestScheduler.setAllConstraintsMet(UUID)
قبل أو بعد إضافةWorkRequest
المحدّدة إلى قائمة الانتظار. b/111238024
التغييرات التي قد تؤدي إلى أعطال
- تمت إضافة التعليق التوضيحي
@NonNull
إلىWorkManager.getInstance()
بدلاً من@Nullable
. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية (تكون القيمةnull
ضمنيًا). - تم وضع العلامة
@hide
على بعض الطرق التي لا يمكن استخدامها إلا داخليًا. ويشمل ذلك أداة إنشاءConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
.
الإصدار 1.0.0-alpha04
26 حزيران (يونيو) 2018
إصلاح الأخطاء
- تتم الآن إعادة جدولة
PeriodicWorkRequest
بشكل صحيح عند استخدام التنفيذ المستند إلىAlarmManager
. - تم إصلاح خطأ محتمل في ANR عند إعادة جدولة جميع العاملين بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
- تمت إضافة تعليقات توضيحية بشأن إمكانية القيم الخالية إلى واجهات برمجة تطبيقات مختلفة في WorkManager. b/110344065
- تسجيل الاستثناءات غير المرصودة التي تحدث أثناء تنفيذ Worker. b/109900862
- تم السماح بعمليات نقل البيانات المدمرة في قاعدة البيانات في حال قررت الرجوع إلى إصدار قديم من WorkManager. b/74633270
- تم إصلاح مشكلة تعطُّل عملية نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا حدثت فقط إذا كنت تستخدم تنسيق العلامة الضمنية نفسه.
الإصدار 1.0.0-alpha03
19 حزيران (يونيو) 2018
إصلاح الأخطاء
تم إصلاح مشكلة تزامن في عملية التنفيذ المستندة إلى
AlarmManager
. b/80346526.تم إصلاح مشكلة تكرار المهام عند استخدام
JobScheduler
بعد إعادة تشغيل الجهاز.تستمر الآن المهام التي تتضمّن مشغّلات معرّف الموارد المنتظم (URI) للمحتوى في العمل بعد إعادة التشغيل. b/80234744
تعديلات على المستندات: b/109827628 وb/109758949 وb/80230748
تم إصلاح عُطل كان يحدث عند إعادة وضع
WorkRequest
في قائمة الانتظار. b/109572353.تم إصلاح تحذيرات برنامج الترجمة البرمجية Kotlin عند استخدام التبعية
work-runtime-ktx
.يستخدم WorkManager الآن الإصدار
Room
من1.1.1-rc1
.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
getStatusesSync()
، وهي النسخة المتزامنة منWorkContinuation.getStatuses()
. - تتضمّن
Worker
إمكانية التمييز بين الإلغاء الذي بدأه المستخدم والإيقاف المؤقت الذي طلبه نظام التشغيل. تعرضWorker.isStopped()
القيمةtrue
إذا تم طلب أي نوع من أنواع التوقف. تعرضWorker.isCancelled()
القيمةtrue
عندما يتم إلغاء العمل بشكل صريح. b/79632247 - إضافة إمكانية استخدام JobParameters#getNetwork() على الإصدار 28 من واجهة برمجة التطبيقات يتم عرض ذلك من خلال
Worker.getNetwork()
. - تمت إضافة
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
حتى تتمكّن من فرض عدد المهام التي يمكن إرسالها إلىJobScheduler
أوAlarmManager
. يساعد ذلك في منعWorkManager
من حجز جميع خاناتJobScheduler
المتاحة. - تمت إضافة
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
التي تساعد في تحديد نطاق من معرّفات الوظائفJobScheduler
الآمنة لاستخدامها فيWorkManager
. b/79996760 - تعرض الدالة
Worker.getRunAttemptCount()
عدد مرات التشغيل الحالية لعنصرWorker
معيّن. b/79716516 - تتيح لك
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
إضافةPeriodicWorkRequest
فريد إلى قائمة الانتظار. b/79600647 - يؤدي
WorkManager.cancelAllWork()
إلى إلغاء جميعWorker
. يمكن للمكتبات التي تعتمد علىWorkManager
الاستعلام عن آخر مرة تم فيها استدعاء هذه الطريقة باستخدامWorkManager.getLastCancelAllTimeMillis()
لإجراء عملية تنظيف إضافية للحالة الداخلية. - تمت إضافة
WorkManager.pruneWork()
لإزالة المهام المكتملة من قاعدة البيانات الداخلية. b/79950952، b/109710758
التغييرات في السلوك
- تمت إضافة علامة ضمنية لجميع
WorkRequest
، وهي اسم الفئة المؤهَّل بالكامل لـWorker
. يتيح ذلك إمكانية إزالةWorkRequest
بدونtag
أو عندما لا يتوفّرid
. b/109572351
التغييرات التي قد تؤدي إلى أعطال
- تمت إعادة تسمية "
Worker.WorkerResult
" إلى "Worker.Result
". - يتضمّن
Worker.onStopped
الآن المَعلمة الإضافيةisCancelled
التي تم ضبطها علىtrue
عندما تم إلغاءWorker
بشكلٍ صريح.
الإصدار 1.0.0-alpha02
24 مايو 2018
إصلاح الأخطاء
- تم إصلاح
NullPointerException
فيState.isFinished()
. b/79550068 - تم إصلاح مشكلة كانت تؤدي إلى إعادة جدولة
Worker
فيApplication.onCreate()
. b/79660657 - تم إصلاح مشكلة كانت تسمح بجدولة عمل أكثر مما يسمح به نظام التشغيل. b/79497378
- تم نقل عملية تنظيف عمليات قفل التنشيط المرتبطة بـ
Worker
إلى سلسلة الخلفية. - تتم الآن عملية التنظيف بشكل صحيح عند اكتمال جميع المهام المعلّقة في عملية تنفيذ
AlarmManager
. - تم إصلاح استعلامات SQL الخاصة بالتنظيف والتي أثّرت في اللغات غير الإنجليزية. b/80065360
- أتحنا استخدام
float
فيData
. b/79443878 - تعرض الدالة
Data.Builder.putAll()
الآن نسخة افتراضية منBuilder
. b/79699162 - المزيد من تعليقات Javadoc والتصحيحات في المستندات b/79691663
تغييرات واجهة برمجة التطبيقات
- يمكن أن تتفاعل
Worker
s مع إيقافها. يمكن استخدام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
.