WorkManager
آخر تعديل | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
---|---|---|---|---|
23 نيسان (أبريل) 2025 | 2.10.1 | - | - | - |
تحديد التبعيات
لإضافة تبعية على WorkManager، يجب إضافة مستودع Google Maven إلى مشروعك:
أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle
ل
تطبيقك أو وحدتك:
Groovy
dependencies { def work_version = "2.10.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.10.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
للحصول على معلومات عن استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.
لمزيد من المعلومات حول العناصر الاعتمادية، يُرجى الاطّلاع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 2.10
الإصدار 2.10.1
23 نيسان (أبريل) 2025
تم إصدار androidx.work:work-*:2.10.1
. يتضمّن الإصدار 2.10.1 عمليات الربط هذه.
إصلاح الأخطاء
- الحد من احتمالية ظهور
TooManyRequestsException
من تسجيلWorkManager
لـNetworkCallback
المستخدَم لتتبُّع القيود ((b/231499040)[https://issuetracker.google.com/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 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) ولجميع الإصدارات عند استخدام AGP 8.1 أو إصدار أحدث (مثل D8 الإصدار 8.1). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)
الإصدار 2.10.0-alpha02
17 نيسان (أبريل) 2024
تم إصدار androidx.work:work-*:2.10.0-alpha02
. يتضمّن الإصدار 2.10.0-alpha02 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية إصدار نطاقات التتبّع من خلال
@RestrictTo
Tracer
قابل للضبط فيWorkManager
. (I17d7f، b/260214125) - تمت إضافة
Configuration.workerCoroutineContext
للتحكّم في أداة الإرسال التي يتم تنفيذCoroutineWorker
فيها. ويُنصح بتجنب استخدامDispatchers.Default
فيWorkManager
تمامًا. (Icd1b7) - إضافة معالجات استثناءات مخصّصة لعمال "مهام Google" (Ib1b74، b/261190695)
- يمكن الآن إنشاء
OneTimeWorkRequest.Builder
وPeriodicWorkRequest.Builder
باستخدامKClass
بدلاً منClass
:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6) - تم نقل فئة
WorkManager
إلى Kotlin. تقدّم الآن الطرق التي تعرضLiveData
أوListenableFuture
أوFlow
معلومات صحيحة حول إمكانية القيمة الخالية. وقد يتطلّب ذلك إجراء تغييرات في رمز المصدر الخاص بالعملاء، إذا كانت افتراضات ما إذا كان العنصر قابلاً للقيمة الخالية في هذا الرمز غير صحيحة. (If6757)
الإصدار 2.10.0-alpha01
24 كانون الثاني (يناير) 2024
تم إصدار androidx.work:work-*:2.10.0-alpha01
. يحتوي الإصدار 2.10.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- يمكن للمطوّرين تحديد
NetworkRequest
كقيد لأحد العمال من خلال طريقةConstraints.setRequiredNetworkRequest
. يتيح ذلك التحكّم بشكل أدق في الشبكة التي يجب أن يعمل عليها هذا العامل.
تغييرات واجهة برمجة التطبيقات
- إضافة إمكانية تحديد
NetworkRequest
كقيد (Id98a1، b/280634452)
الإصدار 2.9
الإصدار 2.9.1
7 آب (أغسطس) 2024
تم إصدار androidx.work:work-*:2.9.1
. يحتوي الإصدار 2.9.1 على عمليات الربط هذه.
إصلاح الأخطاء
- إصلاح عطل ناتج عن
WorkManager
محاولة إعادة تشغيل عامل يعمل لفترة طويلة (أي عامل يعمل في المقدّمة) عندما كان نوع العمل الذي يعمل في المقدّمة يحتوي على أذونات متطلّبات Android 14 الأساسية التي تم إبطالها (b/333957914)
الإصدار 2.9.0
29 تشرين الثاني (نوفمبر) 2023
تم إصدار androidx.work:work-*:2.9.0
. يحتوي الإصدار 2.9.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 2.8.0
- إمكانية المراقبة من خلال
Flow
بدلاً منLiveData
، يمكن الآن مراقبة مستوى تقدّم Worker من خلال Flow عبرWorkManager.getWorkInfosFlow
وطرق مشابهة. - يوفّر
WorkManager
الآن تلميحًا عن سبب إيقاف أحد مهام Worker في السابق. يمكن إجراء طلب بحث من العامل نفسه من خلال طريقةgetStopReason()
أو منWorkInfo
من خلالgetStopReason()
. - تحديد جداول زمنية دقيقة للعوامل المتكررة من خلال
setNextScheduleTimeOverride
يتيح ذلك إجراء حساب ديناميكي لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات التحديث التكيُّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون أي تغييرات. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
مع هذه الأساليب لتجنُّب إلغاء عامل حالي أثناء جدولة العامل التالي. - اختبار WorkManager باستخدام ميزة "تطابق سلاسل المهام" في مرحلة الإنتاج يمكن استخدام
ExecutorsMode.PRESERVE_EXECUTORS
فيinitializeTestWorkManager
للحفاظ على أدوات التنفيذ التي تم ضبطها فيConfiguration
واستخدام سلسلة المهام الرئيسية الفعلية. - تم نقل واجهات برمجة التطبيقات Coroutines، مثل
CoroutineWorker
، من العنصر الإضافي 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
الآن للعاملين في عناوين uris للمحتوى من أجل منحهم خانات مضمونة فيJobScheduler
لمنع عدم توفّر تعديلات المحتوى في ظلّ كثافة الاستخدام العالية. يمكن ضبط الحدّ الأقصى من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تتم إضافة قيود إلى
WorkInfo
. (I162c0)
الإصدار 2.9.0-rc01
18 تشرين الأول (أكتوبر) 2023
تم إصدار androidx.work:work-*:2.9.0-rc01
. يحتوي الإصدار 2.9.0-rc01 على هذه المراجعات.
- لم يتم إجراء أي تغييرات منذ الإصدار التجريبي الأخير.
الإصدار 2.9.0-beta01
6 أيلول (سبتمبر) 2023
تم إصدار androidx.work:work-*:2.9.0-beta01
. يحتوي الإصدار 2.9.0-beta01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة ثوابت لأسباب التوقف التي يعرضها
WorkInfo.stopReason
وListenableWorker.stopReason
(I0cc00)
الإصدار 2.9.0-alpha02
26 تموز (يوليو) 2023
تم إصدار androidx.work:work-*:2.9.0-alpha02
. يحتوي الإصدار 2.9.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- يوفّر
WorkManager
الآن تلميحًا عن سبب إيقاف أحد مهام Worker في السابق. يمكن إجراء طلب بحث من العامل نفسه من خلال طريقةgetStopReason()
أو منWorkInfo
من خلالgetStopReason()
.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
stopReason
إلىWorkInfo
. يتيح هذا الإجراءstopReason
بعد تشغيل العامل. قد يكون ذلك مفيدًا في الإبلاغ عنstopReason
بطريقة قابلة للاستخدام، لأنّه بعد إيقاف أحد عمال الجلسة، يمكن إيقاف التطبيق نفسه بسرعة كبيرة. (I21386) - السماح بضبط الساعة من خلال الإعدادات واستخدامها لتحديد تسلسل تنفيذ اختبارات Worker (Ic586e)
- تمت إضافة طريقة
getStopReason()
إلىListenableWorker
التي تشير إلى سبب إيقاف العامل. (I07060) - تمت إضافة
WorkManagerTestInitHelper#closeWorkDatabase()
لتجنُّب التحذير الصادر من Closeguard بشأن الموارد التي تم تسريبها. (Ia8d49)
إصلاح الأخطاء
- تمت إضافة إمكانية تجاوز
overrideNextScheduleTime
باستخدامTestDriver
وإصلاح المشاكل المتعلّقة بقابلية الاختبار. (Ic2905)
الإصدار 2.9.0-alpha01
7 حزيران (يونيو) 2023
تم إصدار androidx.work:work-*:2.9.0-alpha01
. يحتوي الإصدار 2.9.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- إمكانية المراقبة من خلال
Flow
بدلاً منLiveData
، يمكن الآن مراقبة مستوى تقدّم Worker من خلال Flow عبرWorkManager.getWorkInfosFlow
وطرق مشابهة. - تحديد جداول زمنية دقيقة للعوامل المتكررة من خلال
setNextScheduleTimeOverride
يتيح ذلك إجراء حساب ديناميكي لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات التحديث التكيُّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون أي تغييرات. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
مع هذه الأساليب لتجنُّب إلغاء عامل حالي أثناء جدولة العامل التالي. WorkManager
يجري اختبارًا باستخدام ميزة "تطابق سلاسل المحادثات" في قناة الإصدار العلني. يمكن استخدامExecutorsMode.PRESERVE_EXECUTORS
للحفاظ على أدوات التنفيذ التي تم ضبطها فيConfiguration
واستخدام سلسلة المهام الرئيسية الفعلية.- تم نقل واجهات برمجة تطبيقات Coroutines، مثل
CoroutineWorker
، من العنصر الإضافيwork-runtime-ktx
إلى العنصر الرئيسيwork-runtime
. أصبحwork-runtime-ktx
فارغًا الآن.
تغييرات واجهة برمجة التطبيقات
- أصبحت طريقة وضع تصميم
WorkInfo
علنية الآن، ما قد يكون مفيدًا في الاختبار. (Ia00b6، b/209145335) - أصبح
work-runtime-ktx
فارغًا الآن، وأصبحCoroutineWorker
والأدوات الأخرى الخاصة بـ kotlin متاحة الآن في العنصرwork-runtime
الرئيسي. (I71a9a) - تمت إضافة طريقة
setNextScheduleTimeOverride
التي تتيح ضبط جداول العمل الدورية بدقة (I3b4da). - تمت إعادة تسمية
getEarliestRunTimeMillis
إلىgetNextScheduleTimeMillis
. (I2bd7a) - تتم إضافة معلومات وقت التشغيل المجدوَل التالي إلى
WorkInfo
. (I797e4) - تتم إضافة معلومات التأخير الأولي وفترة التكرار إلى
WorkInfo
. (I52f2f) - تمت إضافة طريقة مراقبة العمال من خلال "العمليات" من خلال الطرق
getWorkInfosByTagFlow
وgetWorkInfoByIdFlow
وgetWorkInfosForUniqueWorkFlow
وgetWorkInfosFlow
(If122a). - تمت إضافة التعليقات التوضيحية
@RequiresApi(...)
غير المتوفّرة إلى وظائف الإنشاء والخصائص في "القيود". وهي الآن متوافقة مع التعليقات التوضيحية المقابلة لها فيConstraints.Builder
التي كانت موجودة في الإصدارات الأولى منWorkManager
. (I6d7d2) - تمّ وضع حدّ منفصل في
WorkManager
الآن للعاملين في عناوين uris للمحتوى من أجل منحهم خانات مضمونة فيJobScheduler
لمنع عدم توفّر تعديلات المحتوى في ظلّ كثافة الاستخدام العالية. يمكن ضبط الحدّ من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تتم إضافة قيود إلى
WorkInfo
. (I162c0)
الإصدار 2.8
الإصدار 2.8.1
22 آذار (مارس) 2023
تم إصدار androidx.work:work-*:2.8.1
. يحتوي الإصدار 2.8.1 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ ANR في
RescheduleReceiver
الذي لم يكن يعالج في السابق بثتَين متزامنتَين بشكل صحيح. (b/236906724)
الإصدار 2.8.0
8 شباط (فبراير) 2023
تم إصدار androidx.work:work-*:2.8.0
. يحتوي الإصدار 2.8.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 2.7.0
الميزات الجديدة
- تمت إضافة إمكانية تعديل
WorkRequests
بطريقة غير مزعجة، مع الحفاظ على وقت إضافة الطلبات إلى "قائمة الانتظار" الأصلي وعمليات الربط وما إلى ذلك. اطّلِع على مقالتنا التفصيلية في المدونة حول هذه الميزة، بالإضافة إلى مستندات javadoc الخاصة بـWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
للحصول على مزيد من التفاصيل.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل العمل مع الحفاظ على وقت إضافة المهمة إلى "قائمة الانتظار" الأصلي وسلسلة المهام.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهو مشابه لـREPLACE
الحالية، ولكنه أقل تدخلاً: لا تلغي هذه الطريقة عاملاً عاملاً إذا كان قيد التشغيل حاليًا وتحافظ على وقت إضافة المهمة إلى "قائمة الانتظار"، ويتم احتساب الفترة الزمنية والتأخير الأولي من وقت إضافة المهمة إلى "قائمة الانتظار" الأصلي، بدلاً من وقت التعديل. تم إيقافREPLACE
نهائيًا للحد من الالتباس بينREPLACE
وUPDATE
اللذَين يحملان اسمًا مشابهًا جدًا. إذا كنت لا تزال تريد الاحتفاظ بالدلالات السابقة لـREPLACE
، يمكن استخدامCANCEL_AND_REENQUEUE
الذي تمت إضافته حديثًا والذي يتطابق معREPLACE
. (I985ed، b/219446409) - تمت إضافة إمكانية اعتراض استثناءات الجدولة من خلال توفير
Consumer<Throwable>
عبر setSchedulingExceptionHandler) - تمت إضافة إمكانية توفير
Consumer<Throwable>
من خلال setInitializationExceptionHandler لتحديد ما إذا كانت هناك مشاكل عند محاولة بدء WorkManager. - تم نقل أدوات المساعدة المضمّنة في
OneTimeWorkRequest
وPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، b/209145335) - تمت إضافة الطرق المساعِدة
WorkQuery.fromIds
وWorkQuery.fromStates
وWorkQuery.fromUniqueWorkNames
وWorkQuery.fromTags
لإنشاءWorkQuery
مباشرةً. (b/199919736) (If48f2، b/199919736) - تمت إضافة
getForegroundInfo
إلىWorker
. (Ic1ead) RxWorker
في كلّ من RxJava 2 وRxJava 3 يتضمّن الآنsetForeground
الذي يعرضCompletable
ويمكن استخدامه بدلاً منsetForegroundInfoAsync
الذي يعرضListenableFuture
.- تحتوي كل من
RxWorker
في RxJava 2 وRxJava 3 علىgetForegroundInfo
التي تعرضSingle
والتي يمكن استخدامها بدلاً منgetForegroundInfoAsync
التي تعرضListenableFuture
. (b/203851459) - يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام
Constraints.Builder
، ما يُعدّ مناسبًا لمستخدمي Kotlin. (Idc390، b/137568653) - تمت إضافة إمكانية التحقّق مما إذا تمّت بدء عملية
WorkManager
. تمت أيضًا إضافة واجهة برمجة تطبيقاتgetConfiguration()
جديدة لمطوّري المكتبات للحصول على الإعدادات التي تمّت بدءWorkManager
بها. (I6eff3، b/212300336)
إصلاح الأخطاء
- تم إصلاح مشكلة في جدولة المهام التي كانت تمنع تشغيل مهام العمل على الفور عند ازدياد عدد المهام. (I9686b، b/248111307)
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذنPOST_NOTIFICATIONS
في حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (Ie542e، b/238790278) - انشر عمليات الإلغاء في
CoroutineScope
إلىListenableFuture
عند استخدامsuspendCancellableCoroutine
.
الإصدار 2.8.0-rc01
7 كانون الأول (ديسمبر) 2022
تم إصدار androidx.work:work-*:2.8.0-rc01
. يحتوي الإصدار 2.8.0-rc01 على هذه المراجعات.
الميزات الجديدة
- ما مِن ميزات جديدة في هذا الإصدار. هذا الإصدار هو في الأساس إصدار مُعدَّل.
الإصدار 2.8.0-beta02
9 تشرين الثاني (نوفمبر) 2022
تم إصدار androidx.work:work-*:2.8.0-beta02
. يحتوي الإصدار 2.8.0-beta02 على هذه المراجعات.
إصلاح الأخطاء
- تمّ إصلاح طريقة
equals
فيWorkInfo
، التي لم تكن تأخذ في الاعتبار في السابق معلومات الجيل الجديد. (4977 سم³)
الإصدار 2.8.0-beta01
5 تشرين الأول (أكتوبر) 2022
تم إصدار androidx.work:work-*:2.8.0-beta01
. يحتوي الإصدار 2.8.0-beta01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة في جدولة المهام التي كانت تمنع تشغيل مهام العمل على الفور عند ازدياد عدد المهام. (I9686b، b/248111307)
الإصدار 2.8.0-alpha04
7 أيلول (سبتمبر) 2022
تم إصدار androidx.work:work-*:2.8.0-alpha04
. يحتوي الإصدار 2.8.0-alpha04 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkerInfo.getGeneration()
وWorkerParameters.getGeneration()
اللذان يعرضان الجيل الذي ينتمي إليه عامل. يكون لدى عامل أجيال متعددة، إذا تم تعديله من خلالWorkManager.updateWork
أوWorkManager.enqueueUniquePeriodicWork
باستخدامExistingPeriodicWorkPolicy.UPDATE
. يُرجى العِلم أنّه إذا كان العامل قيد التشغيل حاليًا، من الممكن أن تعرض هذه الطريقة جيلًا أحدث من جيل العامل الذي يعمل حاليًا إذا حدث تحديث أثناء تنفيذ العامل. (I665c5، b/219446409) (I128a9، b/219446409) - تمت إضافة
InitializationExceptionHandler
، وهو معالج استثناءات يمكن استخدامه لتحديد ما إذا كانت هناك مشاكل عند محاولة بدءWorkManager
. (I061de)
الإصدار 2.8.0-alpha03
10 آب (أغسطس) 2022
تم إصدار androidx.work:work-*:2.8.0-alpha03
. يحتوي الإصدار 2.8.0-alpha03 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة إمكانية تعديل
WorkRequests
بطريقة غير مزعجة، مع الحفاظ على وقت إضافة الطلبات إلى "قائمة الانتظار" الأصلي وعمليات الربط وما إلى ذلك. اطّلِع علىWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
لمزيد من التفاصيل.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل العمل مع الحفاظ على وقت إضافة المهمة إلى "قائمة الانتظار" الأصلي وسلسلة المهام.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهو مشابه لـREPLACE
الحالية، ولكنه أقل تدخلاً: لا تلغي هذه الطريقة عاملاً عاملاً إذا كان قيد التشغيل حاليًا وتحافظ على وقت إضافة المهمة إلى "قائمة الانتظار"، ويتم احتساب الفترة الزمنية والتأخير الأولي من وقت إضافة المهمة إلى "قائمة الانتظار" الأصلي، بدلاً من وقت التعديل. تم إيقافREPLACE
نهائيًا لتقليل الالتباس بينREPLACE
وUPDATE
اللذَين يحملان اسمًا مشابهًا جدًا. إذا كنت لا تزال تريد الاحتفاظ بالدلالات السابقة لـREPLACE
، يمكن استخدامCANCEL_AND_REENQUEUE
الذي تمت إضافته حديثًا والذي يتطابق معREPLACE
. (I985ed، b/219446409) - إضافة إمكانية اعتراض استثناءات الجدول الزمني من خلال تحديد
SchedulingExceptionHandler
(I033eb) - تم نقل أدوات المساعدة المضمّنة في
OneTimeWorkRequest
وPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، b/209145335)
إصلاح الأخطاء
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذن POST_NOTIFICATIONS في حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 2.8.0-alpha02
6 نيسان (أبريل) 2022
تم إصدار androidx.work:work-*:2.8.0-alpha02
. يحتوي الإصدار 2.8.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام Builder، ما يُعدّ مناسبًا لمستخدمي Kotlin. (Idc390، b/137568653)
- تمت إضافة إمكانية التحقّق مما إذا تمّت بدء
WorkManager
. تمت أيضًا إضافة واجهة برمجة تطبيقاتgetConfiguration()
جديدة لمطوّري المكتبات للحصول على الإعدادات التي تمّت بدءWorkManager
بها. (I6eff3، b/212300336)
الإصدار 2.8.0-alpha01
12 كانون الثاني (يناير) 2022
تم إصدار androidx.work:work-*:2.8.0-alpha01
. يحتوي الإصدار 2.8.0-alpha01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة الطرق المساعِدة
WorkQuery.fromStates
وWorkQuery.fromUniqueWorkNames
وWorkQuery.fromTags
لإنشاء WorkQuery مباشرةً. (If48f2، b/199919736) - إضافة طرق BuildCompat تجريبية لحِزم تطوير البرامج (SDK) المستقبلية (Iafd82، b/207528937)
- أضِف
getForegroundInfo
إلىWorker
. (Ic1ead) - تمت إضافة طرق مساعدة
WorkQuery.fromIds
لإنشاء WorkQuery مباشرةً من الأرقام التعريفية. (Ie5bdf، b/199919736) - يتضمّن RxWorker الآن
setForeground
الذي يعرضCompletable
ويُمكن استخدامه بدلاً منsetForegroundInfoAsync
الذي يعرضListenableFuture
. (I85156) - يتضمّن RxWorker في RxJava 2 الآن
getForegroundInfo
الذي يعرضSingle
ويُمكن استخدامه بدلاً منgetForegroundInfoAsync
الذي يعرضListenableFuture
. (I21c91، b/203851459) - يتضمّن RxWorker في RxJava 3 الآن
getForegroundInfo
يعرضSingle
يمكن استخدامه بدلاً منgetForegroundInfoAsync
الذي يعرضListenableFuture
. (I1ca8a) - يتضمّن RxWorker الآن
setForeground
الذي يعرضCompletable
ويُمكن استخدامه بدلاً منsetForegroundInfoAsync
الذي يعرضListenableFuture
. (I992a3، b/203851459)
إصلاح الأخطاء
- يمكنك نشر عمليات الإلغاء في
CoroutineScope
إلىListenableFuture
عند استخدامsuspendCancellableCoroutine
. (I77e63)
الإصدار 2.7
الإصدار 2.7.1
17 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.work:work-*:2.7.1
. يحتوي الإصدار 2.7.1 على هذه المراجعات.
إصلاح الأخطاء
- يتمّ نقل عمليات الإلغاء في
CoroutineScope
إلىListenableFuture
عند استخدامsuspendCancellableCoroutine
. (I77e63) - يتم طرح استثناء على الفور عند وضع علامة على طلبات العمل المتأخرة بأنّها عاجلة. bef1762
الإصدار 2.7.0
13 تشرين الأول (أكتوبر) 2021
تم إصدار androidx.work:work-*:2.7.0
. يحتوي الإصدار 2.7.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 2.6.0
يقدّم WorkManager واجهة برمجة تطبيقات
WorkRequest.Builder.setExpedited(...)
جديدة للمساعدة في معالجة القيود المفروضة على الخدمات التي تعمل في المقدّمة في Android 12.عند استخدام
setExpedited(...)
، يفوّض WorkManager المهام المُسرَّعة في JobScheduler اعتبارًا من Android 12، مع توفير التوافق مع الإصدارات السابقة من Android من خلال تفويض الخدمة التي تعمل في المقدّمة.
الإصدار 2.7.0-rc01
29 أيلول (سبتمبر) 2021
تم إصدار androidx.work:work-*:2.7.0-rc01
. يحتوي الإصدار 2.7.0-rc01 على هذه المراجعات.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.7.0-beta01
.
الإصدار 2.7.0-beta01
1 أيلول (سبتمبر) 2021
تم إصدار androidx.work:work-*:2.7.0-beta01
. يحتوي الإصدار 2.7.0-beta01 على هذه المراجعات.
الميزات الجديدة
- تقليل الصراع بين عمليات SQLite المتعددة عند بدء WorkManager
تغييرات واجهة برمجة التطبيقات
- أزِل واجهات برمجة تطبيقات
@ExperimentalExpeditedWork
لأنّ واجهات برمجة تطبيقات النظام الأساسي الأساسية لنظام التشغيل Android 12 (S) متوفّرة بإصدار ثابت. (aosp/1792806)
إصلاح الأخطاء
- تقديم رسالة خطأ أفضل للعاملين في الطلبات العاجلة الذين لا ينفذون
getForegroundInfoAsync()
(aosp/1809376)
الإصدار 2.7.0-alpha05
21 تموز (يوليو) 2021
تم إصدار androidx.work:work-*:2.7.0-alpha05
. يحتوي الإصدار 2.7.0-alpha05 على هذه المراجعات.
يتضمّن هذا الإصدار أيضًا إصلاحات للأخطاء من إصدار WorkManager 2.6.0-beta02
.
الإصدار 2.7.0-alpha04
2 حزيران (يونيو) 2021
تم إصدار androidx.work:work-*:2.7.0-alpha04
.
يتضمّن هذا الإصدار أيضًا التغييرات من الإصدار 2.6.0-beta01.
تغييرات واجهة برمجة التطبيقات
- لم تعُد ميزة
ListenableWorker.setForegroundAsync()
متوقّفة نهائيًا. - ننصحك باستخدام واجهة برمجة التطبيقات
WorkRequest.Builder.setExpedited(...)
متى أمكن. لتقديم دعم أفضل للحالات التي لا يخضع فيها التطبيق لقيود الخدمات التي تعمل في المقدّمة، يمكن للمطوّرين استخدام واجهة برمجة التطبيقاتListenableWorker.setForegroundAsync()
. - في حال تمّ استدعاء
ListenableWorker.setForegroundAsync()
عندما يكون التطبيق خاضعًا لقيود الخدمات التي تعمل في المقدّمة، سيؤدي ذلك إلى طرح الخطأ ForegroundServiceStartNotAllowedException.
إصلاح الأخطاء
- عند إعادة جدولة المهام المُسرَّعة، لن تعود مُسرَّعة. وتصبح مهام عادية.
الإصدار 2.7.0-alpha03
21 نيسان (أبريل) 2021
تم إصدار androidx.work:work-*:2.7.0-alpha03
. يحتوي الإصدار 2.7.0-alpha03 على هذه المراجعات.
الميزات الجديدة
من WorkManager
2.6.0-alpha02
: يضيف هذا الإصدار إمكانية استخدام Workers التي يمكن تشغيلها في أي عملية. (Iaf200)من WorkManager
2.6.0-alpha02
: تمت إضافةRemoteCoroutineWorker
وهو عملية تنفيذRemoteListenableWorker
يمكن ربطها بعملية عن بُعد. (I30578)
تغييرات واجهة برمجة التطبيقات
- من WorkManager
2.6.0-alpha02
:تمت إضافة دعم لقيود الشبكةTEMPORARILY_UNMETERED
. (I08d5e) - من WorkManager
2.6.0-alpha02
:إتاحة وظائف متعددة العملياتsetProgressAsync()
(Ib6d08) - من WorkManager
2.6.0-alpha02
:اجعلWorkManagerInitializer
علنية حتى تتمكّنandroidx.startup.Initializer
الأخرى من استخدامها كعناصر تابعة. (I5ab11)
الإصدار 2.7.0-alpha02
10 آذار (مارس) 2021
تم إصدار androidx.work:work-*:2.7.0-alpha02
. يحتوي الإصدار 2.7.0-alpha02 على هذه المراجعات.
إصلاح الأخطاء
- يجب تحديد قابلية
PendingIntent
للتغيير بوضوح لإصلاح عطل عند استهداف Android 12. (b/180884673)
الإصدار 2.7.0-alpha01
18 شباط (فبراير) 2021
تم إصدار androidx.work:work-*:2.7.0-alpha01
. يحتوي الإصدار 2.7.0-alpha01 على هذه المراجعات.
الميزات الجديدة
يقدّم WorkManager واجهة برمجة تطبيقات
WorkRequest.Builder.setExpedited(...)
جديدة لمراعاة قيود الخدمة التي تعمل في المقدّمة في Android 12.لم يعُد بإمكان التطبيقات تشغيل خدمة تعمل في المقدّمة عندما تكون في الخلفية. لذلك، لتقديم دعم أفضل للعمل الذي يستغرق وقتًا طويلاً والذي كان مرتبطًا سابقًا بمراحل نشاط الخدمة التي تعمل في المقدّمة، يمكن للتطبيقات وضع علامة
WorkRequest
على أنّها مُعجَّلة.هذه الواجهة هي بديل لواجهات برمجة التطبيقات
setForegroundAsync(...)
/setForeground(...)
التي تم إيقافها نهائيًا.عند استخدام
setExpedited(...)
، يفوّض WorkManager المهام المُسرَّعة فيJobScheduler
بدءًا من Android 12، مع توفير التوافق مع الإصدارات السابقة من Android من خلال تفويض الخدمات التي تعمل في المقدّمة.
تغييرات واجهة برمجة التطبيقات
- إتاحة استخدام
WorkRequest
المستعجلة
الإصدار 2.6.0
الإصدار 2.6.0
1 أيلول (سبتمبر) 2021
تم إصدار androidx.work:work-*:2.6.0
. يحتوي الإصدار 2.6.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 2.5.0
يستخدم WorkManager الآن
androidx.startup
لإعداد WorkManager. إذا كنت قد استخدمتtools:node="remove"
ContentProvider
المستخدَم لإعداد WorkManager في السابق، عليك إجراء ما يلي بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />
تمت إضافة دعم لـ "العمال" الذين يمكنهم العمل في أي عملية. (Iaf200)
تمت إضافة
RemoteCoroutineWorker
وهو عبارة عن تنفيذ RemoteListenableWorker يمكنه الربط بعملية عن بُعد. (I30578)
الإصدار 2.6.0-rc01
4 آب (أغسطس) 2021
تم إصدار androidx.work:work-*:2.6.0-rc01
. يحتوي الإصدار 2.6.0-rc01 على هذه المراجعات.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.6.0-beta02
.
الإصدار 2.6.0-beta02
21 تموز (يوليو) 2021
تم إصدار androidx.work:work-*:2.6.0-beta02
. يحتوي الإصدار 2.6.0-beta02 على هذه المراجعات.
إصلاح الأخطاء
- تم الآن إلغاء ربط
RemoteWorkManager
بـRemoteWorkManagerService
بشكل صحيح، ما يسمح لـRemoteWorkManagerService
بتنظيف المساحة بشكل صحيح. aosp/1730694 - يتم الآن إلغاء ربط
RemoteListenableWorker
بـRemoteWorkerService
بشكل صحيح، ما يسمح لـRemoteWorkerService
بتنظيف المساحة بشكل صحيح. aosp/1743817 - لا يتم تشغيل
ForceStopRunnable
الآن إلا في عملية التطبيق الأساسية. هذا تحسين، ويتجنّب التنافس على الموارد للتطبيقات التي تستخدم عمليات متعددة. aosp/1749180، aosp/1761729
الإصدار 2.6.0-beta01
2 حزيران (يونيو) 2021
تم إصدار androidx.work:work-*:2.6.0-beta01
. يحتوي الإصدار 2.6.0-beta01 على هذه المراجعات.
يتضمّن هذا الإصدار بعض التحسينات البسيطة على المستندات. يتطابق الإصدار إلى حد كبير مع 2.6.0-alpha02.
الإصدار 2.6.0-alpha02
21 نيسان (أبريل) 2021
تم إصدار androidx.work:work-*:2.6.0-alpha02
. يحتوي الإصدار 2.6.0-alpha02 على هذه المراجعات.
الميزات الجديدة
إضافة دعم لـ "العمال" الذين يمكنهم العمل في أي عملية (Iaf200)
تمت إضافة
RemoteCoroutineWorker
وهو عبارة عن تنفيذRemoteListenableWorker
يمكنه الربط بعملية عن بُعد. (I30578)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة إمكانية استخدام قيد الشبكة
TEMPORARILY_UNMETERED
. (I08d5e) - إتاحة استخدام وظائف متعددة في
setProgressAsync()
(Ib6d08) - اجعل
WorkManagerInitializer
علنية حتى تتمكّنandroidx.startup.Initializer
الأخرى من استخدامها كتبعيات. (I5ab11)
الإصدار 2.6.0-alpha01
24 آذار (مارس) 2021
تم إصدار androidx.work:work-*:2.6.0-alpha01
. يحتوي الإصدار 2.6.0-alpha01 على هذه المراجعات.
الميزات الجديدة
يستخدم
WorkManager
الآنandroidx.startup
لإعداد WorkManager. كانandroidx.work.impl.WorkManagerInitializer
ينفّذ ذلك في السابق. (aosp/1608813)إذا كنت قد استخدمت
tools:node="remove"
ContentProvider
المستخدَم لبدء مرحلة عملية في السابق، عليك إجراء ما يلي بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(أو)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
تغييرات واجهة برمجة التطبيقات
- أضِف واجهة برمجة تطبيقات
Result.getOutputData()
تعرضoutputData
الخاص بـ ListenableWorker. (Ie51e3)
إصلاح الأخطاء
- أضِف حلًا بديلاً لخلل في المصنّع الأصلي للجهاز يؤدي إلى ظهور خطأ
SecurityException
عند استخدام واجهات برمجة تطبيقاتAlarmManager
. (aosp/1587518)
الإصدار 2.5.0
الإصدار 2.5.0
27 كانون الثاني (يناير) 2021
تم إصدار androidx.work:work-*:2.5.0
. يحتوي الإصدار 2.5.0 على هذه المراجعات.
التغييرات الرئيسية منذ الإصدار 2.4.0
- عنصر
:work:work-multiprocess
جديد للتطبيقات التي تستخدم عمليات متعددة ويؤدي ذلك إلى تحسين الأداء من خلال توحيد جدولة طلبات العمل في عملية واحدة.- لاستخدام
work-multiprocess
، حدِّد تبعية على:implementation "androidx.work:work-multiprocess:2.5.0"
- حدِّد عملية أساسية باستخدام Configuration.Builder.setDefaultProcessName(String).
- عند استخدام
work-multiprocess
، عليك أيضًا استخدام RemoteWorkManager لإدارةWorkRequest
. يتواصل RemoteWorkManager دائمًا مع العملية المحدّدة. يتم أيضًا تشغيل أداة جدولة العمليات الداخلية في العملية المحدّدة.
- لاستخدام
- في بعض الأحيان، لا يمكن لـ
ActivityManager
إنشاء مثيلJobService
لبدء مهمة. يؤدي ذلك إلى إيقاف المهمة الأساسية بدون إشعار بسبب خطأ في المنصة. يضمنWorkManager
الآن توفُّر مهام احتياطية لكلWorkRequest
عند بدءApplication
من خلال مهام المصالحة. ويؤدي ذلك إلى تحسين موثوقية تنفيذ المهام بشكل كبير. (b/172475041، aosp/1489577) - يحدّ
WorkManager
من نمو قاعدة البيانات عن طريق تقليل مدة المخزن المؤقت الذي يتم تتبُّعWorkRequest
فيه بعد اكتمالWorkRequest
. كانت المدة7
يومًا في السابق. تم خفضها إلى1
يوم بالإضافة إلى مدة keepResultsForAtLeast. (aosp/1419708) - يتيح
TestListenableWorkerBuilder
الآن استخدام الفئة المُعاد تمثيلها التي تمتد إلىListenableWorker
لتسهيل الاختبار. (aosp/1443299، b/169787349) - يتوفّر الآن أداة فحص WorkManager عند استخدام الإصدار Arctic Fox من "استوديو Android".
الإصدار 2.5.0-rc01
13 كانون الثاني (يناير) 2021
تم إصدار androidx.work:work-*:2.5.0-rc01
. يحتوي الإصدار 2.5.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خلل في عدم إلغاء صلاحية
getWorkInfosLiveData
بشكل صحيح بعد تعديل الكيانات عند استخدام واجهة برمجة التطبيقات المستندة إلىWorkQuery
. (aosp/1540566، b/173769028) - تم إصلاح خطأ كان يؤدي إلى عدم وضع علامة "ناجحة" على معاملات قاعدة البيانات في بعض الحالات النادرة. ويؤدي ذلك إلى حدوث مشاكل في بعض أجهزة Motorola. (aosp/1535368، b/175944460)
- تم إصلاح خطأ لتجاهل
NoSuchElementException
عند محاولة إلغاء الربط بعملية غير نشطة. (aosp/1530589) - يمكنك تحسين
ConstraintTrackingWorker
لإيقافListenableWorker
فقط إذا لم يكن قد تم إيقافه من قبل. (aosp/1496844، b/172946965) - تعديل مكتبات androidx.work لاستهداف Java 8 (Ibd2f2)
الإصدار 2.5.0-beta02
2 كانون الأول (ديسمبر) 2020
تم إصدار androidx.work:work-*:2.5.0-beta02
. يحتوي الإصدار 2.5.0-beta02 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ في
androidx.work:work-multiprocess
حيث حظر WorkManager عن غير قصد سلسلة المهام التي تُجري عملية الاتصال عند محاولة الربط بالعملية المحدّدة. (aosp/1475538) - تم إصلاح خلل كان يؤدي إلى عدم توفّر
PeriodicWorkRequest
بشكل صحيح. (b/172475041، aosp/1489577) - تمت إضافة حل بديل لحلّ خطأ في النظام الأساسي عند إيقاف الخدمة التي تعمل في المقدّمة عند استخدام واجهات برمجة تطبيقات
setForeground*
. (b/170924044، aosp/1489901)
الإصدار 2.5.0-beta01
28 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.work:work-*:2.5.0-beta01
. يحتوي الإصدار 2.5.0-beta01 على هذه المراجعات.
الميزات الجديدة
- يحدّ
WorkManager
تلقائيًا من عددWorkRequest
التي يمكن أن يرصدها جدول التشغيل الجاري. لا يزال يتم تنفيذ الطلبات بترتيب "الأوّل في الداخل أولاً في الخارج". (aosp/1455228) - يحاول
WorkManager
الاسترداد عندما تكون قاعدة بيانات التطبيق في حالة سيئة. (aosp/1463103)
إصلاح الأخطاء
- عند انقطاع
ListenableWorker
، ضَع علامةENQUEUED
عليها على الفور ليتمكّن الفريق من إعادة جدولتها لاحقًا. (aosp/1455618، b/170273988)
الإصدار 2.5.0-alpha03
14 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.work:work-*:2.5.0-alpha03
. يحتوي الإصدار 2.5.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- لا يستخدم النوعان
TestListenableWorkerBuilder
وTestWorkerBuilder
الأنواع الأوّلية. (I883ad، b/169787349)
إصلاح الأخطاء
- استخدِم
ApplicationInfo
لتحديد اسم عملية التطبيق التلقائية. (b/168716641، aosp/1429950) - يجب تصحيح قواعد إذن الوصول إلى
RemoteWorkManager
وRemoteWorkContinuation
. لم تعُد واجهات برمجة التطبيقات هذه تحمل علامة@Restricted
. (aosp/1432091) - يجب إصلاح قواعد Proguard للتطبيق
:work:work-multiprocess
. (aosp/1432091) - تحسين مراحل حياة الإشعارات للعمل الذي يستغرق وقتًا طويلاً والمرتبط بخدمة تعمل في المقدّمة (b/168502234، aosp/1431331)
الإصدار 2.5.0-alpha02
16 أيلول (سبتمبر) 2020
تم إصدار androidx.work:work-*:2.5.0-alpha02
. يحتوي الإصدار 2.5.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- أضِف واجهة برمجة تطبيقات إلى WorkQuery لتتمكّن من استخدام
id
لطلب البحث عنWorkInfo
. (aosp/1412372، b/157335295) - يتيح WorkManager للتطبيقات التي تستخدم عمليات متعددة استخدام عنصر جديد (
androidx.work:work-multiprocess:*
) لإدارة هذه العمليات بشكل أفضل. ويساعد هذا العنصر الجديد في حلّ بعض المشاكل التي تواجهها التطبيقات الكبيرة، بما في ذلك:- يجب عادةً إعداد WorkManager في كل عملية تطبيق. وهذا ليس أمرًا جيدًا لأنّ هناك زيادة في طلبات الحصول على SQLite، ما يؤدي بدوره إلى حدوث مشاكل أخرى. يتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام
Configuration#setDefaultProcessName(processName)
.processName
هو اسم عملية مؤهَّل بالكامل يبدو مثلpackageName:processName
(مثلcom.example:remote
). - مجموعة من واجهات برمجة التطبيقات الجديدة:
RemoteWorkManager
وRemoteWorkContinuation
إلىenqueue
وcancel
وquery
لطلبات العمل لا تتضمّن واجهات برمجة التطبيقات هذه صيغLiveData
لتجنُّب تعارض SQLite في عمليات متعددة. تتم إعادة توجيه جميع المكالمات إلىenqueue
وcancel
وquery
إلى عملية تطبيقprimary
باستخدام AIDL وعرضListenableFuture
سلس. (aosp/1392657، aosp/1411210، aosp/1412215، aosp/1417713)
- يجب عادةً إعداد WorkManager في كل عملية تطبيق. وهذا ليس أمرًا جيدًا لأنّ هناك زيادة في طلبات الحصول على SQLite، ما يؤدي بدوره إلى حدوث مشاكل أخرى. يتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام
تغييرات واجهة برمجة التطبيقات
- يزيل WorkManager الآن
WorkRequest
المكتملة التي لا تتضمّن أيّ تبعيات غير مكتملة بشكل أكثر فاعلية. تم تغيير مدة التخزين المؤقت من7
يوم إلى1
يوم. (aosp/1419708)
إصلاح الأخطاء
- يُعدِّل WorkManager الآن المهام بشكل استباقي حتى تتم مزامنة مهام
WorkRequest
ومهامJobScheduler
عند بدءWorkManager
. (aosp/1412794، b/166292069)
الإصدار 2.5.0-alpha01
19 آب (أغسطس) 2020
تم إصدار androidx.work:work-*:2.5.0-alpha01
. يحتوي الإصدار 2.5.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- تغييرات على واجهات برمجة التطبيقات الداخلية التي تسمح لنا بتوفير أدوات أفضل باستخدام
WorkManager
من الآن فصاعدًا يُرجى متابعتنا للحصول على آخر الأخبار.
إصلاح الأخطاء
- التعامل مع
SecurityException
عند تتبُّع حالة الشبكة على بعض الأجهزة (aosp/1396969)
المساهمة الخارجية
- إصلاح مستندات
ArrayCreatingInputMerger
من قِبل Zac Sweers (github/43)
الإصدار 2.4.0
الإصدار 2.4.0
22 تموز (يوليو) 2020
تم إصدار androidx.work:work-*:2.4.0
. يحتوي الإصدار 2.4.0 على هذه المراجعات.
التغييرات الرئيسية منذ الإصدار 2.3.0
- أصبحت أداة جدولة العمليات في
WorkManager
أكثر كفاءة. في السابق، كان الإجراءScheduler
قيد التنفيذ لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتأخّر وتم استيفاء قيوده. يتتبّع جدول التشغيل أثناء العملية الآنWorkRequest
التي قد يتم تنفيذها في المستقبل، بما في ذلك طلبات PeriodicWorkRequests. لا تلتزم أيضًا مهامScheduler
قيد التنفيذ بحدود الجدولة (ولكنها لا تزال مقيّدة بحجمExecutor
المستخدَم من قِبل WorkManager). ويعني ذلك أنّه يمكن للتطبيق الآن تنفيذ المزيد من طلبات العمل عندما يكون في المقدّمة. لإدارة تنفيذ المهام المتأخرة في المقدّمة، يقدّمWorkManager
أيضًاRunnableScheduler
قابل للضبط. (aosp/1185778) - يتيح WorkManager الآن استخدام RxJava 3. لاستخدام RxJava 3، يجب تضمين التبع التالي:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - تمت إضافة إمكانية البحث عن
WorkInfo
باستخدامWorkQuery
. يكون ذلك مفيدًا عندما يريد المطوّرون البحث عنWorkInfo
حسب مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder.fromStates(...)
أوWorkQuery.Builder. fromTags(...)
أوWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230، b/143847546) أضِف إمكانية طلب معلومات التشخيص من
WorkManager
باستخدام:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:
- طلبات العمل التي تم إكمالها في آخر 24 ساعة
- طلبات العمل التي يتم تنفيذها حاليًا
- طلبات العمل المُجدوَلة (aosp/1235501)
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACE
الذي يشبهAPPEND
، ولكنّه يحلّ محل سلسلة تم إلغاء متطلباتها الأساسية أو تعذّر إكمالها. (b/134613984، aosp/1199640)يجب توفير إمكانية إضافة
RunnableScheduler
مخصّص لتتبُّع طلبات العمل التي يجب تنفيذها في المستقبل. ويستخدمه "جدول التشغيل" الجاري. (aosp/1203944)إتاحة إضافة مصانع بشكل ديناميكي لتفويضها عند استخدام
DelegatingWorkerFactory
(b/156289105، aosp/1309745)يجب أن يكون تتبُّع قيود
BATTERY_NOT_LOW
أكثر توافقًا مع المنصة. (aosp/1312583)يستخدم جدولة المهام أثناء التشغيل الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويُعدّ ذلك مفيدًا لتقديم دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceType
الصحيح عند استخدام واجهات برمجة تطبيقاتsetForegroundAsync()
(b/147873061، aosp/1215915) - تحديد أرقام تعريف JobScheduler التي يجب أن يستخدمها WorkManager عند استخدام واجهات برمجة تطبيقات JobService مباشرةً. aosp/1223567
- تمت إضافة قاعدة جديدة لفحص الأخطاء تضمن أنّ
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
- استخدام
إنّ المكالمات التي يتم إجراؤها إلى
setForegroundAsync()
والتي لا تكتمل قبل اكتمالListenableWorker
سيتم الآن الإشارة إليها من خلالIllegalStateException
فيListenableFuture
المعروض. (aosp/1262743)تم إصلاح خطأ يتسبب في عدم إيقاف
ForegroundService
بعد انقطاعWorker
في المقدّمة. (b/155579898، aosp/1302153)إصلاح خطأ يحاول فيه
WorkManager
تنفيذ عدّة نُسخ منWorker
مرتبطة بخدمة تعمل في المقدّمة (b/156310133، aosp/1309853)
الإصدار 2.4.0-rc01
24 حزيران (يونيو) 2020
تم إصدار androidx.work:work-*:2.4.0-rc01
. يحتوي الإصدار 2.4.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- يستخدم جدولة المهام أثناء التشغيل الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويُعدّ ذلك مفيدًا لتقديم دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
الإصدار 2.4.0-beta01
20 أيار (مايو) 2020
يتم إصدار androidx.work:work-gcm:2.4.0-beta01
وandroidx.work:work-runtime:2.4.0-beta01
وandroidx.work:work-runtime-ktx:2.4.0-beta01
وandroidx.work:work-rxjava2:2.4.0-beta01
وandroidx.work:work-testing:2.4.0-beta01
. يحتوي الإصدار 2.4.0-beta01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ يتسبب في عدم إيقاف
ForegroundService
بعد انقطاعWorker
في المقدّمة. (b/155579898، aosp/1302153) - إصلاح خطأ يحاول فيه
WorkManager
تنفيذ عدّة نُسخ منWorker
مرتبطة بخدمة تعمل في المقدّمة (b/156310133 وaosp/1309853) - إتاحة إضافة مصانع بشكل ديناميكي لتفويضها عند استخدام
DelegatingWorkerFactory
(b/156289105، aosp/1309745) - يجب أن يكون تتبُّع قيود
BATTERY_NOT_LOW
أكثر توافقًا مع المنصة. (aosp/1312583)
الإصدار 2.4.0-alpha03
29 نيسان (أبريل) 2020
تم إصدار androidx.work:work-*:2.4.0-alpha03
. يحتوي الإصدار 2.4.0-alpha03 على هذه المراجعات.
الميزات الجديدة
- يتيح WorkManager الآن استخدام RxJava 3. لاستخدام RxJava 3، يجب تضمين التبع التالي:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - تمت إضافة قاعدة جديدة لفحص الأخطاء تضمن أنّ
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
تغييرات واجهة برمجة التطبيقات
- سيؤدي الآن استدعاء
setProgressAsync()
بعد انتهاء تنفيذListenableWorker
إلى إرسال إشارةException
عبرListenableFuture
. (aosp/1285494) - تم وضع علامة
final
علىWorkQuery.Builder
. (aosp/1275037) - تمّت إعادة تسمية طرق المصنع
WorkQuery.Builder
withStates
وwithTags
وwithUniqueWorkNames
ليصبحواfromStates
وfromTags
وfromUniqueWorkNames
على التوالي. (aosp/1280287)
إصلاح الأخطاء
- تجاهل
SecurityException
عند تتبُّع حالة الشبكة لجهاز معيّن. (b/153246136، aosp/1280813)
الإصدار 2.4.0-alpha02
1 نيسان (أبريل) 2020
تم إصدار androidx.work:work-*:2.4.0-alpha02
. يحتوي الإصدار 2.4.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة قاعدة Lint جديدة تُصدر تحذيرًا عندما تتطلّب
WorkRequest
كلاً منConstraints.setRequiresCharging(...)
وConstraints.setRequiresDeviceIdle(...)
. لا يتم شحن بعض الأجهزة مطلقًا وتكون في وضع السكون في الوقت نفسه. وبالتالي، سيتم تنفيذ هذه الطلبات بمعدل أقل من المتوقع. (aosp/1253840)
تغييرات واجهة برمجة التطبيقات
تمت إضافة إمكانية البحث عن
WorkInfo
باستخدامWorkQuery
. يكون ذلك مفيدًا عندما يريد المطوّرون البحث عنWorkInfo
حسب مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder withStates(...)
أوWorkQuery.Builder withTags(...)
أوWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230، b/143847546)إنّ المكالمات التي يتم إجراؤها إلى
setForegroundAsync()
والتي لا تكتمل قبل اكتمالListenableWorker
سيتم الآن الإشارة إليها من خلالIllegalStateException
فيListenableFuture
المعروض. (aosp/1262743)
إصلاح الأخطاء
- تم إصلاح قاعدة التدقيق التي تتحقّق من مدد الفواصل الزمنية غير الصالحة للعناصر
PeriodicWorkRequest
. (aosp/1254846، b/152606442)
الإصدار 2.4.0-alpha01
4 آذار (مارس) 2020
تم إصدار androidx.work:work-*:2.4.0-alpha01
. يحتوي الإصدار 2.4.0-alpha01 على هذه المراجعات.
الميزات الجديدة
أصبحت أداة جدولة العمليات في
WorkManager
أكثر كفاءة. في السابق، كان "جدول التشغيل" الجاري قيد التنفيذ لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتأخّر والذي تم استيفاء قيوده. يتتبّع جدول التشغيل أثناء العمليةWorkRequest
التي قد يتم تنفيذها في المستقبل، بما في ذلكPeriodicWorkRequest
. لا يتّبع "جدول التشغيل" المُضمّن في العملية أيضًا حدود الجدولة (ولكنه لا يزال مقيّدًا بحجمExecutor
الذي يستخدمه WorkManager). وهذا يعني أنّه يمكن للتطبيق الآن تنفيذ المزيد منWorkRequest
عندما يكون في المقدّمة. (aosp/1185778)تمت إضافة إمكانية طلب معلومات التشخيص من WorkManager باستخدام
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:- طلبات العمل التي تم إكمالها في آخر 24 ساعة
- طلبات العمل التي يتم تنفيذها حاليًا
- طلبات العمل المُجدوَلة (aosp/1235501)
قواعد Lint الجديدة التي تفرض ما يلي:
- استخدام
foregroundServiceType
الصحيح عند استخدام واجهات برمجة تطبيقاتsetForegroundAsync()
(b/147873061، aosp/1215915) - تحديد أرقام تعريف
JobScheduler
التي يجب أن يستخدمهاWorkManager
عند استخدام واجهات برمجة تطبيقاتJobService
مباشرةً (aosp/1223567)
- استخدام
تغييرات واجهة برمجة التطبيقات
أضِف
ExistingWorkPolicy.APPEND_OR_REPLACE
الذي يشبهAPPEND
، ولكنّه يحلّ محلّ سلسلة تم إلغاء متطلباتها الأساسية أو تعذّر إكمالها. (b/134613984، aosp/1199640)يجب توفير إمكانية إضافة
RunnableScheduler
مخصّص لتتبُّعWorkRequest
التي يجب تنفيذها في المستقبل. ويستخدمه "جدول التشغيل" الجاري. (aosp/1203944)
إصلاح الأخطاء
- تم إيقاف
setProgress()
نهائيًا فيRxWorker
لأنّه كان يعرض في السابقSingle<Void>
وهو نوع غير ممكن. تمت إضافة واجهة برمجة تطبيقات جديدةsetCompletableProgress()
تعرضCompletable
بدلاً من ذلك، كما تمت إضافة قواعد Lint جديدة تساعد في نقل البيانات إلى واجهات برمجة التطبيقات الجديدة. (b/150080946، aosp/1242665)
الإصدار 2.3.4
الإصدار 2.3.4
18 آذار (مارس) 2020
تم إصدار androidx.work:work-*:2.3.4
. يحتوي الإصدار 2.3.4 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى تشغيل عدّة نُسخ من
Worker
التي تستغرق وقتًا طويلاً، بعد تجاوز مهلة التنفيذ التي تبلغ 10 دقائق. (aosp/1247484، b/150553353) - حلّ مشكلة lint
IssueRegistry
في WorkManager نشكرك @ZacSweers من Slack على مساهمتك. (aosp/1217923)
الإصدار 2.3.3
الإصدار 2.3.3
4 آذار (مارس) 2020
تم إصدار androidx.work:work-*:2.3.3
. يحتوي الإصدار 2.3.3 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خلل كان يؤدي إلى عدم إعادة جدولة
Worker
بشكل صحيح في حال انقطاعها. (b/150325687، aosp/1246571)
الإصدار 2.3.2
الإصدار 2.3.2
19 شباط (فبراير) 2020
تم إصدار androidx.work:work-*:2.3.2
. يحتوي الإصدار 2.3.2 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح مشكلة تجاوز WorkManager الحد الأقصى المسموح به للوظائف، وهو 100 وظيفة، في JobScheduler في حالات نادرة (aosp/1226859، b/149092520)
- إصلاح مشكلة تعارض في ConstraintControllers (aosp/1220100)
- تم تحسين دورة حياة الخدمة التي تعمل في المقدّمة لإدارة "العمال" الذين يستغرقون وقتًا طويلاً في التنفيذ. (aosp/1226295)
- تم تحسين إدارة إلغاء الإشعارات للعاملين الذين يستغرقون وقتًا طويلاً عند إلغاء العامل. (aosp/1228346)
الإصدار 2.3.1
الإصدار 2.3.1
5 شباط (فبراير) 2020
تم إصدار androidx.work:work-*:2.3.1
. يحتوي الإصدار 2.3.1 على هذه المراجعات.
إصلاح الأخطاء
- إدارة مراحل نشاط
Notification
بشكل أفضل لعملياتWorker
التي تستغرق وقتًا طويلاً وتُنفَّذ عندما يكونService
نشطًا في المقدّمة (aosp/1218539، b/147249312) - يعتمد
WorkManager
الآن على الإصدار الثابت منandroidx.sqlite:sqlite-framework:2.1.0
. (aosp/1217729) - تمّت إضافة قواعد فحص الأخطاء لضمان تحديد
foregroundServiceType
فيAndroidManifest.xml
عند استخدامforegroundServiceType
فيForegroundInfo
. (aosp/1214207، b/147873061)
الإصدار 2.3.0
الإصدار 2.3.0
22 كانون الثاني (يناير) 2020
تم إصدار androidx.work:work-*:2.3.0
بدون أي تغييرات منذ 2.3.0-rc01
. يحتوي الإصدار 2.3.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 2.2.0
- إتاحة العمل المهم أو الذي يستغرق وقتًا طويلاً من خلال
ListenableWorker#setForegroundAsync()
- إتاحة إمكانية الاطّلاع على مستوى تقدّم العمال من خلال
ListenableWorker#setProgressAsync()
- يُجمِّع WorkManager الآن قواعد lint إضافية كجزء من المكتبة التي تساعد في رصد الأخطاء في وقت مبكر.
الإصدار 2.3.0-rc01
8 كانون الثاني (يناير) 2020
تم إصدار androidx.work:work-*:2.3.0-rc01
. يحتوي الإصدار 2.3.0-rc01 على هذه المساهمات.
هذا الإصدار مطابق لـ 2.3.0-beta02
.
إصلاح الأخطاء
- يحدّد العنصر
work-testing
الآن تبعيةapi
علىwork-runtime-ktx
. (aosp/1194410)
الإصدار 2.3.0-beta02
18 كانون الأول (ديسمبر) 2019
تم إصدار androidx.work:work-*:2.3.0-beta02
. يحتوي الإصدار 2.3.0-beta02 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة رسالة خطأ أفضل لاستثناءات SQLite غير القابلة للاسترداد. (aosp/1185777)
- تمت إضافة قاعدة lint تضمن إزالة مقدّم المحتوى
androidx.work.impl.WorkManagerInitializer
منAndroidManifest.xml
عند استخدام ميزة "الإعداد عند الطلب". (aosp/1167007) - تمت إضافة تحذير أخطاء نحوية عند استخدام
enqueue()
لإنشاءPeriodicWorkRequest
بدلاً منenqueueUniquePeriodicWork()
. (aosp/1166032)
تغييرات واجهة برمجة التطبيقات
- يطلب منك
ForegroundInfo
الآن تحديدnotificationId
المطلوب استخدامه عند استخدامListenableWorker.setForegroundAsync()
. هذا تغيير قد يؤدي إلى حدوث عطل. يتيح لك ذلك تنفيذ العديد منWorker
التي تستغرق وقتًا طويلاً بشكل موازٍ. تديرWorkManager
أيضًا مدّة صلاحيةNotification
المقدَّمة بشكل أفضل. (b/145473554، aosp/1181208، asop/1181216، asop/1183577)
إصلاح الأخطاء
- تم إصلاح خلل في تنفيذ AlarmManager حيث لم يتم تنظيف الإنذارات بشكل صحيح. (aosp/1156444)
- تم إصلاح خطأ كان يؤدي إلى إنشاء سلسلة
WorkContinuation
غير صحيحة عند استخدام قائمة فارغة منWorkRequest
. (b/142835274، aosp/1157051)
تغييرات التبعية
- يستخدم WorkManager الآن الإصدار 2.2.2 من 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
المُدرَجة في "قائمة الانتظار" من الحدود القصوى للتخطيط. (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()
. تمت أيضًا إضافة واجهة برمجة تطبيقاتsetProgress
-ingsuspend
المقابلة فيCoroutineWorker
وsetProgress
فيRxWorker
التي تعرضSingle<Void>
. باستخدام واجهات برمجة التطبيقات الجديدة هذه، يمكن للعاملين نقل معلومات التقدّم عبرWorkInfo
التي تتضمّن واجهة برمجة تطبيقاتgetProgress
مقابلة. (b/79481554) - يحتوي
Data
على واجهة برمجة تطبيقاتcontainsKey()
يمكن استخدامها للتحقّق من أنّ بيانات الإدخال فيWorker
تحتوي على مفاتيح من النوع المتوقّع. (b/117136838) - يمكن الآن تسلسل
Data
باستخدامData.toByteArray()
وData.fromByteArray()
. يُرجى العِلم أنّه لا تتوفّر أي ضمانات بشأن الإصدارات معData
، لذا يجب عدم الاحتفاظ بها أو استخدامها لإجراء اتصالات بين التطبيقات. ولا يمكن استخدامها إلا بين عمليات متعددة للتطبيق نفسه. - تمت إضافة إمكانية تحديد
InputMergerFactory
من خلالConfiguration.setInputMergerFactory
. (b/133273159)
تغييرات واجهة برمجة التطبيقات
- سيُعرِض WorkManager مثيلًا من
IllegalStateException
إذا أرجعWorkerFactory
مثيلًا منListenableWorker
سبق أن تم استدعاؤه. (b/139554406) - تعديلات على المستندات حول إلغاء
ListenableFuture
وإعادة الاتصالonStopped()
فيListenableWorker
(b/138413671)
إصلاح الأخطاء
- يتجاهل "جدول التشغيل" الجاري الآن
WorkRequest
مع قيدidle
. لا تتلقّى خدمةJobScheduler
هذه الطلبات الآن إلا عندما يكون الجهازidle
. (aosp/1089779) - يستخدم
TestScheduler
الآنExecutor
المحدّد بشكل صحيح لتنفيذ المهام الداخلية في الاختبارات. (aosp/1090749)
الإصدار 2.2.0
الإصدار 2.2.0
15 آب (أغسطس) 2019
تم إصدار androidx.work:work-*:2.2.0
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
هذا الإصدار مطابق للإصدار androidx.work:work-*:2.2.0-rc01
.
التغييرات المهمة في الإصدار 2.2.0 مقارنةً بالإصدار 2.1.0
androidx.work:work-gcm:2.2.0
هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كمجدول عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات التي تقل عن أو تساوي 22. هذا عنصر اختياري يساهم في تحسين الأداء والموثوقية في عمليات المعالجة التي تعمل في الخلفية على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذا العنصر التابع إلى ملف gradle للحصول تلقائيًا على دعم GCMNetworkManager. إذا لم تكن "خدمات Play" متاحة، سيستمر WorkManager في استخدام AlarmManager على الأجهزة القديمة.
الإصدار 2.2.0-rc01
30 تموز (يوليو) 2019
تم إصدار androidx.work:work-*:2.2.0-rc01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خلل في تنفيذ AlarmManager يؤدي إلى إيقاف الخدمة قبل الأوان ويؤدي إلى ظهور
RejectedExecutionException
في حالات نادرة. (aosp/1092374) (b/138238197). - تمت إضافة حل بديل
NullPointerException
عند استخدام واجهات برمجة التطبيقاتJobScheduler
على بعض الأجهزة. (aosp/1091020) (b/138364061)، (b/138441699)
الإصدار 2.2.0-beta02
19 تموز (يوليو) 2019
تم إصدار androidx.work:work-*:2.2.0-beta02
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تمت إزالة الاعتمادية غير المقصودة على jacoco التي تم إدخالها في الإصدار
2.2.0-beta01
.
الإصدار 2.2.0-beta01
17 تموز (يوليو) 2019
تم إصدار androidx.work:work-*:2.2.0-beta01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
الميزات الجديدة
-
androidx.work:work-gcm:2.2.0-beta01
هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كمجدول عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات التي تقل عن أو تساوي 22. هذه تبعية اختيارية تساعد في معالجة الخلفية بشكل أكثر موثوقية وكفاءة على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذا العنصر التابع إلى ملف gradle للحصول تلقائيًا على دعم GCMNetworkManager. إذا لم تكن "خدمات Play" متاحة، سيستمر WorkManager في استخدام AlarmManager على الأجهزة القديمة.
إصلاح الأخطاء
- إصلاح مشكلة
IllegalArgumentException
عند تتبُّع حالة الشبكة على أجهزة Nvidia Shield K1 اللوحية (aosp/1010188)
الإصدار 2.1.0
الإصدار 2.1.0
11 تموز (يوليو) 2019
تم إصدار androidx.work:work-*:2.1.0
. هذا الإصدار مطابق للإصدار androidx.work:work-*:2.1.0-rc01
.
التغييرات المهمة منذ الإصدار 2.0.1
- يتطلّب تطبيق
work-runtime-ktx
الآن استخدام Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلىbuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- تمت إضافة عملية إعداد على الطلب لخدمة WorkManager، والتي ستنشئ WorkManager
فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
- أوقِف أداة الإعداد التلقائي.
- نفِّذ
Configuration.Provider
على عنصرApplication
المخصّص. - غيِّر كل مراجع
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
. وكجزء من هذا التغيير، تم إيقافWorkManager.getInstance()
نهائيًا. من الأفضل دائمًا استبدالWorkManager.getInstance(Context)
الجديد، حتى إذا لم تكن بصدد تنفيذ عملية إشعال على الطلب.
- تتيح
PeriodicWorkRequest
الآن تأخيرات الظهور الأولية. يمكنك استخدامsetInitialDelay
فيPeriodicWorkRequest.Builder
لضبط مهلةPeriodicWorkRequest.Builder
أولية. b/111404867 - تمت إضافة إمكانية تفويض
WorkerFactory
مسجَّلة واحدة أو أكثر باستخدامDelegatingWorkerFactory
. b/131435993 - تمت إضافة إمكانية تخصيص
Executor
المستخدَمة من قِبل WorkManager للقيام بجميع عمليات حفظ السجلات الداخلية من خلالConfiguration.Builder.setTaskExecutor
. - تمت إضافة إمكانية إنشاء فئات
Worker
وListenableWorker
قابلة للاختبار على مستوى الوحدة باستخدامTestWorkerBuilder
وTestListenableWorkerBuilder
في أثرwork-testing
.- يُرجى العلم أنّ
work-testing
يستخدِم الآن Kotlin كتبعية ويضمّ عدّة إضافات Kotlin تلقائيًا.
- يُرجى العلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo
. b/127290461 - يمكن الآن لأنواع
Data
تخزين وعرض وحدات البايت ومصفوفات وحدات البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData
. - يعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه حلّ بعض مشاكل قاعدة البيانات.
الإصدار 2.1.0-rc01
27 حزيران (يونيو) 2019
تم إصدار androidx.work:work-*:2.1.0-rc01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خلل كان يؤدي إلى تعطُّل التطبيق عند تنفيذ المهام باستخدام
JobScheduler
أثناء إجراء عملية احتياطية b/135858602.
الإصدار 2.1.0-beta02
20 حزيران (يونيو) 2019
تم إصدار androidx.work:work-*:2.1.0-beta02
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يستخدم
TestListenableWorkerBuilder
الآنWorkerFactory
الصحيح عند إنشاء نُسخ منListenableWorker
. b/135275844 - تم إصلاح خطأ كان يتسبب في حدوث انحرافات في فترات تنفيذ
WorkRequest
بسبب إنهاء العملية. b/135272196
الإصدار 2.1.0-beta01
13 حزيران (يونيو) 2019
تم إصدار androidx.work:work-*:2.1.0-beta01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يعتمد WorkManager الآن على
Room 2.1.0
، ما من شأنه حلّ بعض مشاكل قاعدة البيانات. - تمت إزالة بعض عمليات إدخال/إخراج القرص في عملية التشغيل على سلسلة التعليمات الرئيسية.
- تم إصلاح مشكلة احتمالية حدوث عرقلة في تتبُّع القيود. b/134361006
- تم إلغاء المهام غير الصالحة التي يُنسَب مصدرها إلى WorkManager بشكل استباقي. b/134058261
- تمت إضافة بعض طلبات الحظر إلى واجهات برمجة التطبيقات JobScheduler للأجهزة التي تُظهر سلوكًا غير عادي.
الإصدار 2.1.0-alpha03
5 حزيران (يونيو) 2019
تم إصدار androidx.work:*:2.1.0-alpha03
.
إصلاح الأخطاء
- مستندات محسّنة لـ
PeriodicWorkRequest
- يستخدم
WorkManagerTestInitHelper
الآن أداة تنفيذ الخلفية الصحيحة للاختبارات. - إصلاحات لمشاكل SQLite عند التعامل مع المعاملات الكبيرة على بعض الأجهزة (b/130182503)
- أصبحت تبعيات WorkManager الآن أكثر دقة. (b/133169148).
- حلّ المشاكل المتعلّقة بجهات التصنيع الأصلية في تنفيذ
JobScheduler
عند جدولة المهام باستخدام WorkManager - تحسينات في أداة جدولة AlarmManager المتعلّقة بمدّة خدمة التطبيقات التي كانت تتسبّب في حدوث أعطال نادرة في السابق (b/133313734)
الإصدار 2.1.0-alpha02
16 أيار (مايو) 2019
تم إصدار الإصدار WorkManager 2.1.0-alpha02. يتضمّن هذا الإصدار العديد من واجهات برمجة التطبيقات الجديدة.
تغييرات واجهة برمجة التطبيقات
تتيح
PeriodicWorkRequest
الآن تأخيرات الظهور الأولية. يمكنك استخدامsetInitialDelay
فيPeriodicWorkRequest.Builder
لضبط مهلةPeriodicWorkRequest.Builder
أولية. b/111404867تمت إضافة إمكانية تفويض
WorkerFactory
مسجَّلة واحدة أو أكثر باستخدامDelegatingWorkerFactory
. b/131435993تمت إضافة إمكانية تخصيص
Executor
المستخدَمة من قِبل WorkManager للقيام بجميع عمليات حفظ السجلات الداخلية من خلالConfiguration.Builder.setTaskExecutor
.تم تحسين المستندات حول
WorkRequest.keepResultsForAtLeast
(b/130638001) وعملية الإعداد عند الطلب وPeriodicWorkRequest.Builder
(b/131711394).
الإصدار 2.1.0-alpha01
24 نيسان (أبريل) 2019
تم إصدار الإصدار WorkManager 2.1.0-alpha01. يتضمّن هذا الإصدار العديد من واجهات برمجة التطبيقات الجديدة. يُرجى العلم أنّه اعتبارًا من هذا الإصدار، ستتوفّر ميزات جديدة لن يتم نقلها إلى الإصدار 1.x. ننصحك بالتبديل إلى الإصدار 2.x.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عملية إعداد على الطلب لخدمة WorkManager، والتي ستنشئ WorkManager
فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
- أوقِف أداة الإعداد التلقائي.
- نفِّذ
Configuration.Provider
على عنصرApplication
المخصّص. - غيِّر كل مراجع
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
. وكجزء من هذا التغيير، تم إيقافWorkManager.getInstance()
نهائيًا. من الأفضل دائمًا استبدالWorkManager.getInstance(Context)
الجديد، حتى إذا لم تكن بصدد تنفيذ عملية إشعال على الطلب.
- تمت إضافة إمكانية إنشاء فئات
Worker
وListenableWorker
قابلة للاختبار على مستوى الوحدة باستخدامTestWorkerBuilder
وTestListenableWorkerBuilder
في أثرwork-testing
.- يُرجى العلم أنّ
work-testing
يستخدِم الآن Kotlin كتبعية، ولكنه أيضًا يتضمّن عدة إضافات Kotlin تلقائيًا.
- يُرجى العلم أنّ
- تمت إضافة عدد محاولات التشغيل إلى
WorkInfo
. b/127290461 - يمكن الآن لأنواع
Data
تخزين وعرض وحدات البايت ومصفوفات وحدات البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصرData
. - تم إيقاف
CoroutineWorker.coroutineContext
نهائيًا. تم إدخال هذا الحقل بشكلٍ غير صحيح بصفتهCoroutineDispatcher
، ومن المفترض ألا تحتاج إليه بعد الآن لأنّه يمكنك الانتقال إلى coroutineContext المطلوبة بنفسك في نص الدالة المعلّقة. - تم الآن
إضافة تعليقات توضيحية إلى
RxWorker.createWork()
وRxWorker.getBackgroundScheduler()
باستخدام أنواع الإرجاع@NonNull
.
الإصدار 2.0.1
الإصدار 2.0.1
9 نيسان (أبريل) 2019
تم طرح الإصدار 2.0.1 من WorkManager. هذا الإصدار مطابق لإصدار 2.0.1-rc01.
الإصدار 2.0.1-rc01
3 نيسان (أبريل) 2019
تم طرح الإصدار WorkManager 2.0.1-rc01. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء. بالنسبة إلى مستخدمي الإصدار 1.x القديم، تظهر بعض هذه التغييرات أيضًا في الإصدار 1.0.1-rc01.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
- تم إصلاح مشكلة تتعلّق بتعطُّل في الحالات القصوى بسبب عدم إزالة بيانات تتبُّع القيود في واجهات برمجة تطبيقات JobScheduler السابقة. b/129226383
- تم إصلاح
StackOverflowError
في ما يتعلّق بالسلاسل الطويلة من الأعمال. b/129091233 - تم تعديل مستندات
PeriodicWorkRequest
للإشارة إلى أنّ وقت الاستراحة المرن غير متاح في واجهة برمجة التطبيقات 23. - تم إصلاح بعض الروابط غير الصالحة في مستندات Kotlin.
الإصدار 2.0.0
الإصدار 2.0.0
20 آذار (مارس) 2019
تم طرح الإصدار 2.0.0 من WorkManager. هذا الإصدار مطابق للإصدار 2.0.0-rc01 وهو إصدار AndroidX من الإصدار 1.0.0 الثابت مع تبعيات AndroidX. ننصحك باستهداف هذا الإصدار بدلاً من الإصدارات القديمة من 1.x. وستستهدف جميع عمليات التطوير النشطة الإصدار 2.x ولن تتلقّى الإصدارات 1.x سوى إصلاحات الأخطاء الملحّة لفترة محدودة.
الإصدار 2.0.0-rc01
7 آذار (مارس) 2019
تم إصدار الإصدار WorkManager 2.0.0-rc01. هذا الإصدار مطابق للإصدار الثابت 1.0.0 ولكنه يحتوي على تبعيات AndroidX. بعد أن يصبح الإصدار 2.0.0 ثابتًا، يجب تضمين هذا الإصدار ولن تتلقّى الإصدارات القديمة من 1.x سوى بعض إصلاحات الأعطال الحرجة. وستستهدف جميع عمليات التطوير النشطة الإصدار 2.x.
التبعيات التي تم إنشاؤها قبل AndroidX
المستندات المرجعية: Java
رائع
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
الإصدار 1.0.1
الإصدار 1.0.1
9 نيسان (أبريل) 2019
تم إصدار الإصدار 1.0.1 من WorkManager. هذا الإصدار مطابق لإصدار 1.0.1-rc01.
يُرجى العِلم بأنّنا ننصح بشدّة المستخدمين بالتحديث إلى الإصدار 2.x من WorkManager، لأنّه لن يتم طرح سوى عدد قليل جدًا من التحديثات على الإصدار 1.x من الآن فصاعدًا. لن يتم أيضًا طرح واجهات برمجة التطبيقات الجديدة لإصدار 1.x من المكتبة.
الإصدار 1.0.1-rc01
2 نيسان (أبريل) 2019
تم طرح الإصدار WorkManager 1.0.1-rc01. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
- تم إصلاح مشكلة تتعلّق بتعطُّل في الحالات القصوى بسبب عدم إزالة بيانات تتبُّع القيود في واجهات برمجة تطبيقات JobScheduler السابقة. b/129226383
- تم إصلاح
StackOverflowError
في ما يتعلّق بالسلاسل الطويلة من الأعمال. b/129091233
الإصدار 1.0.0
الإصدار 1.0.0
5 آذار (مارس) 2019
هذا هو الإصدار الثابت 1.0.0 من WorkManager. هذا الإصدار من WorkManager هو مطابق للإصدار 1.0.0-rc02.
الإصدار 1.0.0-rc02
21 شباط (فبراير) 2019
هذا هو الإصدار الثاني من الإصدار التجريبي للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحَين للأخطاء.
إصلاح الأخطاء
يتم الآن جدولة عمليات
Worker
بشكل صحيح بعد تعطُّل التطبيق. b/124546316إنّ
Worker
التي تُظهرException
غير محدَّد يتم وضع علامة عليها بشكل صحيح الآن على أنّهاFAILED
، ولم تعُد تؤدي إلى تعطُّل عملية تشغيل التطبيق.
الإصدار 1.0.0-rc01
14 شباط (فبراير) 2019
هذا إصدار مُحتمَل للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحًا واحدًا للخطأ.
إصلاح الأخطاء
- يراعي التنفيذ المستنِد إلى AlarmManager الآن بشكل صحيح
flex
فترات الانتظار لطلبات PeriodicWorkRequests. b/124274584
الإصدار 1.0.0-beta05
6 شباط (فبراير) 2019
يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة تم فيها استخدام
JobScheduler.getPendingJob(...)
في واجهة برمجة التطبيقات 23. b/123893059 - تم إصلاح
NullPointerException
على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/123835104
الإصدار 1.0.0-beta04
4 شباط (فبراير) 2019
يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- تحسين جدولة PeriodicWork لتنفيذ AlarmManager المستنِد
- تم إصلاح حالة تعذّر فيها على WorkManager تتبُّع القيود بشكل صحيح عند استخدام التنفيذ المستنِد إلى AlarmManager. b/123379508
- تم إصلاح مشكلة تعذّر فيها على WorkManager إعادة تنفيذ العمل عند إنهاء العملية عند استخدام التنفيذ المستنِد إلى AlarmManager. b/123329850
- تم إصلاح مشكلة كانت تؤدي إلى تسرُّب عمليات قفل التنشيط في WorkManager عند استخدام التنفيذ المستنِد إلى AlarmManager.
الإصدار 1.0.0-beta03
25 كانون الثاني (يناير) 2019
يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- لقد أجرينا تحديثًا
1.0.0-beta02
كان يتسبب في عدم تنفيذ العمل بشكل صحيح في بعض الحالات. b/123211993 - تم إصلاح مشكلة عدم التزام العمل بتوقيت الانتظار بشكل صحيح. b/122881597
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى أو) أو إصدارات أقدم. هذه مواصلة لعملية الإصلاح في1.0.0-beta02
. b/121345393 - أضفنا
exported=false
لبعض المكوّنات في البيان التي كانت تفتقر إلى هذا التعليق التوضيحي. - تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في مستندات مستوى الحزمة.
الإصدار 1.0.0-beta02
15 كانون الثاني (يناير) 2019
يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة طارئة يمكن فيها تنفيذ المهام الدورية أكثر من مرة في كل فاصل زمني على الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات). b/121998363
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/121345393 - تم إصلاح تنفيذ العمل بشكل خاطئ عند عدم استيفاء القيود على الأجهزة التي تعمل بالإصدار Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/122578012
- تحسين معالجة إكمال العمل ليكون أسرع في بعض الحالات القصوى b/122358129
- تمت إضافة تغيير لمعالجة حالات السباق المحتمَلة بين عدّة نُسخ
من
LiveData
التي يستخدمها WorkManager. - تم نقل استخدام الإصدار
Room
من التبعية1.1.1
بدلاً من الإصدار1.1.1-rc01
، لأنّ هذين الإصدارين متطابقان. b/122578011
الإصدار 1.0.0-beta01
19 كانون الأول (ديسمبر) 2018
لا يحتوي هذا الإصدار على أي تغييرات في واجهة برمجة التطبيقات، ومن المفترض أن تظل واجهة برمجة التطبيقات في WorkManager مستقرة من الآن فصاعدًا إلى أن يتم طرح الإصدار التالي ما لم تحدث مشكلة خطيرة. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.
إصلاح الأخطاء
- لن يتمّ تشغيل حسابات الأطفال التي تمّ إلغاؤها سابقًا والتي أكمل والداها عملهما بنجاح. b/120811767
- فئات التسجيل التي تمّت بدءها بشكلٍ صحيح (تظهر بشكلٍ أساسي أثناء الاختبارات)
الإصدار 1.0.0-alpha13
12 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار تغييرًا بسيطًا في واجهة برمجة التطبيقات سيكون مفيدًا لبعض مستخدمي Kotlin.
تغييرات واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
لتكون صفًا داخليًا منListenableWorker
. ويمنع ذلك تعارضات إعادة التشكيل مع فئةResult
ذات المستوى الأعلى في Kotlin. هذا تغيير جذري في واجهة برمجة التطبيقات. b/120564418
تغييرات أساسية في واجهة برمجة التطبيقات
- تم نقل
androidx.work.Result
لتكون صفًا داخليًا منListenableWorker
.
الإصدار 1.0.0-alpha12
5 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار بعض التغييرات التي قد تؤدي إلى حدوث أعطال في واجهة برمجة التطبيقات، يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى حدوث أعطال في واجهة برمجة التطبيقات أدناه. من المرجّح أن يتم إصدار هذا الإصدار كأول إصدار تجريبي. alpha12
تتضمّن أيضًا تعديلات مفصّلة على المستندات.
تغييرات واجهة برمجة التطبيقات
- يقدّم العنصر الجديد
work-rxjava2
RxWorker
. هذاListenableWorker
يتوقعSingle<Payload>
. - تمت إزالة التوافق مع Firebase JobDispatcher بسبب إيقافه نهائيًا قريبًا. وهذا يعني أنّه لن يتم تعديل العنصر
work-firebase
بعد الآن مع بدء استخدام الإصدار التجريبي. وسننظر في إضافة بديل في المستقبل. - تم دمج
Payload
فيResult
. أصبحتResult
الآن "فئة مختومة" تتضمّن ثلاث عمليات تنفيذ محدّدة يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. أصبحتListenableFuture
الآنResult
بدلاً منPayload
. لا تتضمّنWorker
طرق الحصول على البيانات وضبطها للإخراجData
. هذا تغيير قد يؤدي إلى حدوث عطل. - تمت إضافة
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
ونُسخهما لتوفير دعم أفضل لعناوين URL للمحتوى التي يتم تنشيطها ببطء. b/119919774 - تمت إضافة السعر المتغير
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. تتطلّب هذه الطريقة استخدام الإصدار 26 من واجهة برمجة التطبيقات. - تمت إضافة طريقتَي إضافة
Operation.await()
وListenableFuture.await()
في Kotlin. - تمت إعادة تسمية
Operation.getException()
إلىOperation.getThrowable()
. هذا تغيير قد يؤدي إلى حدوث عطل. - لم تعُد فئة
ContentUriTriggers
والطُرق التي تشير إليها متاحة للاستخدام العام. هذا تغيير قد يؤدي إلى حدوث عطل. - تمت إزالة بقية طرق varargs في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في عملية الإنشاء، يمكنك لفّ متغيرات varargs الحالية باستخدامArrays.asList(...)
. لا نزال نُدرِج إصدارات تتضمّن مَعلمة واحدة لكل طريقة. هذا تغيير قد يؤدي إلى حدوث عطل. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
سعر متغير. كانت واجهة برمجة التطبيقات التي يقدّمونها مربكة، وطرقcombine
الحالية أكثر سهولة في الفهم. هذا تغيير قد يؤدي إلى حدوث عطل.
إصلاح الأخطاء
- أصبحت عمليات التنفيذ التي تم إجراؤها قبل الإصدار 6 من نظام التشغيل Android أكثر موثوقية في استرداد العملية التي توقفت عن العمل بسبب مهمة قيد التنفيذ.
- يتم تتبُّع
LiveData
الذي يتم رصده من خلالobserveForever
من خلال WorkManager. هذه ميزة تم نقلها من إصدار سابق لإصلاح مكتبة Room. b/74477406 - تُعرِض
Data.Builder.build()
الآن استثناءً إذا تجاوز العنصر التسلسلي الحد الأقصى لحجمه. في السابق، كان هذا يحدث فقط في سلسلة مهام في الخلفية لا يمكنك التعامل معها بشكل صحيح. - تمييز إضافي بين العمل المتوقف عن العمل والملغى: سيعرض
getWorkInfoById()
WorkInfo
معCANCELLED
State
خلالListenableWorker.onStopped()
. - يجب معاملة
null
Result
على أنّها أخطاء فيListenableWorker
. b/120362353 - حلّ افتراضي لأجهزة Shield Tablets التي تعمل بواجهة برمجة التطبيقات 24 والتي تُظهر أحيانًا الخطأ
IllegalArgumentException
b/119484416
تغييرات أساسية في واجهة برمجة التطبيقات
- تمت إزالة التوافق مع Firebase JobDispatcher بسبب إيقافه نهائيًا قريبًا. وهذا يعني أنّه لن يتم تعديل العنصر
work-firebase
بعد الآن مع بدء استخدام الإصدار التجريبي. وسننظر في إضافة بديل في المستقبل. - تم دمج
Payload
فيResult
. أصبحتResult
الآن "فئة مختومة" تتضمّن ثلاث عمليات تنفيذ محدّدة يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. أصبحتListenableFuture
الآنResult
بدلاً منPayload
. لا تتضمّنWorker
طرق الحصول على البيانات وضبطها للإخراجData
. - تمت إضافة طريقتَي إضافة Kotlin
Operation.await()
وListenableFuture.await()
. - تمت إعادة تسمية
Operation.getException()
إلىOperation.getThrowable()
. - لم تعُد فئة
ContentUriTriggers
والطُرق التي تشير إليها متاحة للاستخدام العام. - تمت إزالة بقية طرق varargs في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في عملية الإنشاء، يمكنك لفّ متغيرات varargs الحالية باستخدامArrays.asList(...)
. لا نزال نُدرِج إصدارات تتضمّن مَعلمة واحدة لكل طريقة. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
سعر متغير. كانت واجهة برمجة التطبيقات التي يقدّمونها مربكة، وطرقcombine
الحالية أكثر سهولة في الفهم.
الإصدار 1.0.0-alpha11
8 تشرين الثاني (نوفمبر) 2018
يحتوي هذا الإصدار على العديد من التغييرات التي ستصبح واجهة برمجة تطبيقات ثابتة في beta
.
تم إجراء تغييرات على واجهة برمجة التطبيقات قد تؤدي إلى حدوث أعطال في هذا الإصدار. يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى حدوث أعطال في واجهة برمجة التطبيقات أدناه.
تغييرات واجهة برمجة التطبيقات
work-runtime-ktx
تقدّمCoroutineWorker
جديدًا.- تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمّ تغيير أسماء جميع صِيغ طريقةgetStatus
المقابلة إلى صِيغgetWorkInfo
المقابلة. هذا تغيير قد يؤدي إلى حدوث عطل. - لم تعُد
ListenableWorker.onStopped()
تقبل وسيطة منطقية تمثّل ما إذا تم إلغاءWorkRequest
. لم تعُد "WorkManager
" تُجري هذا التمييز. هذا تغيير قد يؤدي إلى حدوث عطل. - تمّت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. هذا تغيير قد يؤدي إلى حدوث عطل. - لم تعُد وظائف الإعداد في
Constraints
جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. هذا تغيير قد يؤدي إلى حدوث عطل. WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفيفان تم عرضهما سابقًا. والآن، تُرجع هذه الطرق مجموعات. هذا تغيير قد يؤدي إلى حدوث عطل.- تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. هذا تغيير قد يؤدي إلى حدوث عطل. - لم يعُد باني
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. هذا تغيير قد يؤدي إلى حدوث عطل. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. هذا تغيير قد يؤدي إلى حدوث عطل. - تمت إضافة الكثير من التعليقات التوضيحية
@NonNull
إلى واجهة برمجة التطبيقات المتاحة للجميع لتحسين سهولة استخدامها. - أضِف واجهة برمجة التطبيقات
WorkManager.enqueueUniqueWork()
لإضافةOneTimeWorkRequest
فريدة إلى "قائمة المحتوى التالي" بدون الحاجة إلى إنشاءWorkContinuation
. - تُعرِض الآن جميع الصيغ لطريقتَي
enqueue
وcancel
فيWorkManager
نوعOperation
جديدًا. هذا تغيير قد يؤدي إلى حدوث عطل. - لم تعُد جميع الصيغ من
enqueue
تقبل متغيرات الوسائط فيWorkRequest
. هذا تغيير قد يؤدي إلى حدوث عطل. استخدِم "المجموعات" بدلاً من ذلك. يمكنك استخدامArrays.asList()
لتعديل الرمز الحالي. لقد فعلنا ذلك لتقليل عدد طرق واجهة برمجة التطبيقات ومساحة العرض. - سيؤدي الآن محاولة
initialize
WorkManager
أكثر من مرة لكل عملية إلى ظهورIllegalStateException
. هذا تغيير قد يؤدي إلى حدوث عطل.
إصلاح الأخطاء
- تستخدم الآن
WorkRequest.Builder
في العنصرwork-runtime-ktx
ListenableWorker
. الإصلاحات b/117666259 - تأكَّد من أنّ وقت التشغيل التالي لـ
PeriodicWork
في المستقبل. الإصلاحات b/118204399 - أزِل عمليات إدخال/إخراج القرص المحتمَلة عند استخدام WorkManager عند بدء تشغيل التطبيق. إصلاحات b/117796731
- حلّ مشكلة تعارض في
WorkConstraintsTracker
إصلاحات android-workmanager/issues/56
تغييرات أساسية في واجهة برمجة التطبيقات
- تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمّ تغيير أسماء جميع صِيغ طريقةgetStatus
المقابلة إلى صِيغgetWorkInfo
المقابلة. - لم تعُد
ListenableWorker.onStopped()
تقبل وسيطة منطقية تمثّل ما إذا تم إلغاءWorkRequest
. لم تعُد "WorkManager
" تُجري هذا التمييز. - تمّت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. - لم تعُد وظائف الإعداد في
Constraints
جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفيفان تم عرضهما سابقًا. والآن، تُرجع هذه الطرق مجموعات.- تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. - لم يعُد باني
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. - تُعرِض الآن جميع الصيغ لطريقتَي
enqueue
وcancel
فيWorkManager
نوعًا جديدًا منOperation
. - لم تعُد جميع الصيغ من
enqueue
تقبل متغيرات الوسائط فيWorkRequest
. - سيؤدي الآن محاولة
initialize
WorkManager
أكثر من مرة لكل عملية إلى ظهورIllegalStateException
.
الإصدار 1.0.0-alpha10
11 تشرين الأول (أكتوبر) 2018
يتيح هذا الإصدار العمل غير المتزامن الذي يتحكّم فيه المطوّر. تم إجراء تغييرات على واجهة برمجة التطبيقات قد تؤدي إلى حدوث أعطال في هذا الإصدار. يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى حدوث أعطال في واجهة برمجة التطبيقات أدناه.
نتوقع أن يدخل WorkManager المراحل النهائية من الفترة التجريبية. نتوقع أن تكون واجهة برمجة التطبيقات مستقرة في الإصدار التجريبي، لذا يُرجى تخصيص بعض الوقت لإرسال ملاحظاتك في أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة جميع طرق وفئَات
deprecated
السابقة، لا سيما طريقة الإنشاء التلقائيةWorker
. هذا تغيير قد يؤدي إلى إيقاف واجهة برمجة التطبيقات. - تم تغيير اسم
NonBlockingWorker
إلىListenableWorker
، وهي الآن فئة عامة غير مخفية وجاهزة للاستخدام.- توفّر فئة
ListenableWorker
إمكانية الوصول إلى طريقة مجردة واحدة، وهيListenableFuture<Payload> onStartWork()
، والتي يتمّ استدعاؤها في سلسلة المهام الرئيسية. يعود الأمر إليك في بدء العمل ومعالجته بشكل غير متزامن. عند الانتهاء، عليك تعديلListenableFuture
وفقًا لذلك. يتم توفير عمليات التنفيذ المرجعية لعناصرListenableFuture
في حزمةFutures
فيalpha02
(راجِع قسمWorkManager
أدناه). - يمتد
Worker
إلىListenableWorker
ولا يزال يعمل كالمعتاد، باستخدام طريقةResult doWork()
مجردة. - تم ترتيب بعض الطرق والأعضاء بشكل عشوائي من
Worker
إلىListenableWorker
. - سنوفّر قريبًا عمليات تنفيذ مرجعية لتطبيقات
ListenableWorker
التي تستخدم وظائف التشغيل المتعدّد للكائنات في Kotlin (بعد طرح الإصدارات الثابتة) وRxJava2.
- توفّر فئة
- تم دمج الواجهة
WorkerFactory
والتنفيذ المحدّدDefaultWorkerFactory
في فئة مجردة تُسمىWorkerFactory
. يضمن التنفيذ استدعاء السلوك التلقائي المستنِد إلى النسخ كمحاولة أخيرة لأيّ نُسخ منWorkerFactory
أنشأها المستخدم. هذا تغيير قد يؤدي إلى حدوث عطل. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
وجميع الطرق ذات الصلة. تمت إضافةListenableFuture<Void>
كنوع الإرجاع للعديد من الطرق في واجهة برمجة التطبيقات. هذا تغيير قد يؤدي إلى إيقاف واجهة برمجة التطبيقات.- يمكنك الآن الحصول على البيانات ومراقبتها بشكل متزامن باستخدام
ListenableFuture
. على سبيل المثال، كانWorkManager.enqueue()
يعرضvoid
، ولكنّه يعرض الآنListenableFuture<Void>
. يمكنك استدعاءListenableFuture.addListener(Runnable, Executor)
أوListenableFuture.get()
لتشغيل الرمز البرمجي بعد اكتمال العملية. - يُرجى العِلم أنّ هذه العلامات
ListenableFuture
لا تُعلمك ما إذا نجحت العملية أو تعذّرت، بل تُعلمك فقط بأنّها قد اكتملت. سيظل عليك ربط طرق WorkManager لمعرفة هذه المعلومات. - نتجاهل طلبات
cancel()
على هذه العناصر، لأنّها مربكة ويصعب تحديد سببها (هل تلغي العملية أم العمل الناتج عنها؟). يُعدّ ذلك من ضمن أحكام عقدFuture
. - للحفاظ على التكافؤ مع طرق
getStatus*
المتزامنة، قدّمنا صيغًاListenableFuture
، وأعادنا تسمية الصيغ الحالية التي كانت تعرضLiveData
لتتضمّن "LiveData" صراحةً كجزء من الاسم (على سبيل المثال،getStatusesByIdLiveData(UUID)
). هذا تغيير جذري في واجهة برمجة التطبيقات.
- يمكنك الآن الحصول على البيانات ومراقبتها بشكل متزامن باستخدام
إصلاح الأخطاء
- تم إصلاح المشكلة المعروفة من الإصدار alpha09 المتعلّقة بملفات
androidx-annotations.pro
المكرّرة. يمكنك إزالة الحلّ البديل من ملاحظات الإصدار السابقة عن طريق حذفexclude 'META-INF/proguard/androidx-annotations.pro'
من ملف gradle. - تمت إضافة إعدادات Proguard للاحتفاظ بإنشاء
Worker
الجديد. b/116296569 - إصلاح مشكلة محتملة في حالة تسابق حيث تم
REPLACE
العمل b/116253486 وb/116677275NullPointerException
- يقبل
WorkContinuation.combine()
الآنWorkContinuation
واحدًا أو أكثر بدلاً منWorkContinuation
َين أو أكثر. b/117266752
تغييرات أساسية في واجهة برمجة التطبيقات
- تمّت إزالة جميع طرق وفئَات
deprecated
السابقة، لا سيما طريقة الإنشاء التلقائيةWorker
. - تم دمج الواجهة
WorkerFactory
والتنفيذ المحدّدDefaultWorkerFactory
في فئة مجردة تُسمىWorkerFactory
. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
. - تعرض طرق
WorkManager.getStatus*()
الآنListenableFuture
.WorkManager.getStatus*LiveData()
إرجاعLiveData
الإصدار 1.0.0-alpha09
19 أيلول (سبتمبر) 2018
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف يتضمّن مسارًا مستقلاً عن نظام التشغيل "META-INF/proguard/androidx-annotations.pro"، يُرجى إدراج ما يلي في ملف gradle كحلّ مؤقت إلى أن نصلح المشكلة في الإصدار alpha10:
رائع
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة حلّ آخر كان مطلوبًا لخطأ "100 وظيفة". b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب حالات السباق. b/114705286
- تُجري
ConstraintTrackingWorker.onStopped(boolean)
المفوَّضة مكالمات إلىWorker
الأساسية. b/114125093 - فرض الحد الأدنى الصحيح لتأخير الانتظار في Firebase JobDispatcher b/113304626
- تضمن ميزة "المعالجة المتعدّدة للخيوط" المحسّنة الأداء الداخلي للمكتبة.
- تصحيح مشكلة محتملة في إزالة تكرار
LiveData
داخلياً
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء نُسخ من
Worker
في وقت التشغيل من خلال تحديدWorkerFactory
كجزء منWorkManager.Configuration
. مصنع النسخ الاحتياطية هوDefaultWorkerFactory
، وهو مطابق لسلوك الإصدارات السابقة من WorkManager.- تم وضع علامة على علامتَي الإنشاء التلقائيتَين ل
Worker
وNonBlockingWorker
بأنّهما قيد الإيقاف. يُرجى استخدام طريقة وضع التصميم الجديدة (Worker(Context, WorkerParameters)
) واستدعاءsuper(Context, WorkerParameters)
، وستزيل الإصدارات المستقبلية من WorkManager طريقة وضع التصميم التلقائية.
- تم وضع علامة على علامتَي الإنشاء التلقائيتَين ل
- لقد بدأنا باستخدام الإصدار الجديد من
ListenableFuture
داخليًا (خالٍ من تبعيات Guava). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيتيح هذا التغيير إزالة إخفاءNonBlockingWorker
في نهاية المطاف. - إضافة إمكانية بدء عمل موقّت في
TestDriver
من خلالTestDriver.setInitialDelayMet(UUID)
وTestDriver.setPeriodDelayMet(UUID)
b/113360060
التغييرات التي قد تؤدي إلى حدوث أعطال
- تم إيقاف وظيفتَي الإنشاء التلقائيتَين
Worker
وNonBlockingWorker
نهائيًا. يُرجى نقل البيانات إلى أداة الإنشاء الجديدة في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية المُنشئ التلقائي.
الإصدار 1.0.0-alpha08
27 آب (أغسطس) 2018
إصلاح الأخطاء
- مكونات WorkManager التي تم تصنيفها صراحةً على أنّها غير مُدركة لميزة "التشغيل المباشر" حتى لا يتم تشغيلها أثناء التشغيل المباشر وفي المستقبل، سنوفّر إصدارًا من WorkManager متوافقًا مع عملية التشغيل المباشر. b/112665532
- تم إصلاح مشكلة عدم تنفيذ العمل الذي تمت إعادة محاولة تنفيذه. b/112604021
- تم إصلاح عدم تنفيذ العمل الدوري بشكل متكرّر (مرتبط بالمشكلة أعلاه). b/112859683
- الالتزام بسياسات الانتظار عند تشغيل عملية التطبيق
- تم تصحيح رسائل الاستثناء في
Data
للإشارة إلى أنّ الحد الأقصى هو 10 كيلوبايت. - تم خفض الحد الأقصى لقيمة
Configuration.setMaxSchedulerLimit(int)
إلى 50 لمعالجة بعض حالات التأخير في إكمال معالجةJobScheduler
. b/112817355
الإصدار 1.0.0-alpha07
16 آب (أغسطس) 2018
إصلاح الأخطاء
- تم إصلاح استعلام SQL محتمل يحتوي على حدود سلبية يمكن أن يعرض عددًا غير محدود من النتائج.
- عند اكتمال تنفيذ العمل، يتم الآن إلغاء جميع النُسخ التي في انتظار المراجعة من هذا العمل في أدوات جدولة أخرى بشكل صحيح. وقد أدّى ذلك إلى تجاوز الحدّ الأقصى المسموح به لعدد المهام، وهو
JobScheduler
. b/111569265 - تم حلّ
ConcurrentModificationException
فيConstraintTracker
. b/112272753 - تم تغيير التعليقات التوضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229
تغييرات واجهة برمجة التطبيقات
- يمتدّ الآن
Worker
إلى فئة جديدة،NonBlockingWorker
. ولن يؤثّر ذلك في أي استخدام حالي. في المستقبل، ستصبحNonBlockingWorker
عنصرًا متوافقًا بالكامل مع حلول سلاسل المحادثات المخصّصة. - تم تغيير التعليقات التوضيحية لنوع الإرجاع في
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229 - إضافات Kotlin: تم إيقاف
Map.toWorkData()
نهائيًا وتمت إضافةworkDataOf(vararg Pair<String, Any?>)
من المستوى الأعلى لتكون أكثر اتساقًا مع واجهات برمجة التطبيقات الحالية.
الإصدار 1.0.0-alpha06
1 آب (أغسطس) 2018
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل b/111801342
- إصلاح خطأ كان يتسبب في عدم تشغيل
PeriodicWork
وفقًا للجدول الزمني في وضع "الاستراحة الذكية" b/111469837 - إصلاح مشكلة تعارض في المعالجة عند تتبُّع القيود التي تؤدي إلى تعطُّل
WorkManager
googlecodelabs/android-workmanager/issues/56 - أنشئ
WorkRequest
فريدة عند استخدامWorkRequest.Builder#build()
. b/111408337 - لا تفعِّل استخدام
RescheduleReceiver
إلا عندما تكون هناكWorkRequest
تحتاج إليه. b/111765853
الإصدار 1.0.0-alpha05
24 تموز (يوليو) 2018
تغييرات واجهة برمجة التطبيقات
- تم الآن إضافة تعليق توضيحي إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. بدلاً من ذلك، إذا لم يتمّ إعداد العنصر الفردي بشكل صحيح في حالات الإعداد اليدوي، ستُعرِض الطريقةIllegalStateException
. هذا تغيير أساسي في واجهة برمجة التطبيقات. - تمت إضافة واجهة برمجة تطبيقات جديدة،
Configuration.Builder.setMinimumLoggingLevel(int)
، يمكنها التحكّم في مستوى تفصيل WorkManager. يسجِّل WorkManager الإصدارLog.INFO
والإصدارات الأحدث تلقائيًا. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية بعد الآن (يكونnull
بشكل ضمني). هذا تغيير جذري في واجهة برمجة التطبيقات. - تم وضع علامة
@hide
على بعض الطرق التي لا يُسمح باستخدامها إلا للاستخدام الداخلي. ويشمل ذلكConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
. هذا تغيير قد يؤدي إلى إيقاف واجهة برمجة التطبيقات.
إصلاح الأخطاء
- لم يعُد WorkManager ينفِّذ المهام أثناء الحالات المعروفة للنسخ الاحتياطي التلقائي. وقد يؤدي ذلك إلى حدوث عطل. b/110564377
- تم إصلاح مشكلة جدولة
PeriodicWorkRequest
المزدوجة عند استخدامJobScheduler
. b/110798652 - تم إصلاح مشكلة عدم تنفيذ
PeriodicWorkRequest
بشكل صحيح بعد وضع السكون في الجهاز. b/111469837 - تم إصلاح مشكلة تأخيرات البداية عند استخدام Firebase JobDispatcher. b/111141023
- تم إصلاح بعض المشاكل المحتملة في حالات السباق والتوقيت.
- تمّت إزالة
BroadcastReceiver
بشكل صحيح والتي لم تعد مطلوبة. - تحسين أداء إعادة الجدولة عند إعادة تشغيل التطبيقات بعد فرض إغلاقها
- السماح باستدعاء
TestScheduler.setAllConstraintsMet(UUID)
قبل أو بعد إضافةWorkRequest
المحدّد إلى "قائمة الانتظار" b/111238024
التغييرات التي قد تؤدي إلى حدوث أعطال
- تم الآن إضافة تعليق توضيحي إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. - تم تغيير توقيع
Data.getString()
لكي لا يأخذ قيمة تلقائية بعد الآن (يكون تلقائيًاnull
). - تم وضع علامة
@hide
على بعض الطرق التي لا يُسمح باستخدامها إلا للاستخدام الداخلي. ويشمل ذلكConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
.
الإصدار 1.0.0-alpha04
26 حزيران (يونيو) 2018
إصلاح الأخطاء
- تتم الآن إعادة جدولة
PeriodicWorkRequest
بشكل صحيح عند استخدام التنفيذ المستنِد إلىAlarmManager
. - تم إصلاح خطأ ANR محتمل عند إعادة جدولة جميع وحدات العمل بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
- تمت إضافة تعليقات توضيحية حول قابلية العدم إلى واجهات برمجة تطبيقات WorkManager المختلفة. b/110344065
- تسجيل الاستثناءات غير المرصودة التي تحدث أثناء تنفيذ Worker b/109900862
- السماح بعمليات نقل البيانات المدمرة في حال أردت الرجوع إلى إصدار قديم من WorkManager b/74633270
- تم إصلاح مشكلة تعطُّل عملية نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا لا تحدث إلا إذا استخدمت تنسيق العلامة الضمنية نفسه بنفسك.
الإصدار 1.0.0-alpha03
19 حزيران (يونيو) 2018
إصلاح الأخطاء
تم إصلاح خطأ في عملية التنفيذ المستندة إلى
AlarmManager
. b/80346526.تم إصلاح مهام النسخ المكرّر عند استخدام
JobScheduler
بعد إعادة تشغيل الجهاز.أصبحت المهام التي تستخدم عوامل تشغيل معرّفات الموارد المنتظمة (URI) للمحتوى محفوظة بعد عمليات إعادة التشغيل. b/80234744
تعديلات على المستندات: b/109827628 وb/109758949 وb/80230748
تم إصلاح عطل كان يحدث عند إعادة إدراج
WorkRequest
في "قائمة المحتوى التالي". b/109572353.تم إصلاح التحذيرات الصادرة عن "مجمّع لغة Kotlin" عند استخدام التبعية
work-runtime-ktx
.يستخدم WorkManager الآن الإصدار
Room
من1.1.1-rc1
.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
getStatusesSync()
، وهو الإصدار المتزامن منWorkContinuation.getStatuses()
. - يمكن لتطبيق
Worker
التمييز بين الإلغاء الذي يبدأه المستخدم والإيقاف المؤقت الذي تطلبه نظام التشغيل. يعرضWorker.isStopped()
القيمةtrue
إذا تم طلب أي نوع من عمليات الإيقاف. يعرضWorker.isCancelled()
القيمةtrue
عندما يتم إلغاء العمل صراحةً. b/79632247 - إضافة إمكانية استخدام JobParameters#getNetwork() في الإصدار 28 من واجهة برمجة التطبيقات ويتم عرض هذا من خلال
Worker.getNetwork()
. - تمت إضافة
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
حتى تتمكّن من فرض عدد المهام التي يمكن إرسالها إلىJobScheduler
أوAlarmManager
. يساعد ذلك في منعWorkManager
من أخذ كل خاناتJobScheduler
المتاحة لديك. - تمت إضافة
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
التي تساعد في تحديد نطاق أرقام تعريف مهامJobScheduler
الآمنة لاستخدامها من قِبلWorkManager
. b/79996760 - تعرِض الدالة
Worker.getRunAttemptCount()
عدد عمليات التشغيل الحالية لـWorker
معيّن. b/79716516 - تتيح لك خدمة
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
إضافةPeriodicWorkRequest
فريدة إلى "قائمة الانتظار". b/79600647 - يؤدي
WorkManager.cancelAllWork()
إلى إلغاء جميعWorker
. يمكن للمكتبات التي تعتمد علىWorkManager
الاستعلام عن آخر مرة تم فيها استدعاء هذه الطريقة باستخدامWorkManager.getLastCancelAllTimeMillis()
لتنظيف إضافي للحالة الداخلية. - تمت إضافة
WorkManager.pruneWork()
لإزالة المهام المكتملة من قاعدة البيانات الداخلية. b/79950952، b/109710758
التغييرات في السلوك
- تمت إضافة علامة ضمنية لجميع
WorkRequest
، وهي اسم الفئة المؤهَّل بالكامل للعنصرWorker
. يتيح ذلك إمكانية إزالةWorkRequest
بدونtag
أو عندما لا يكونid
متاحًا. b/109572351
التغييرات التي قد تؤدي إلى حدوث أعطال
- تمت إعادة تسمية
Worker.WorkerResult
إلىWorker.Result
. - يحتوي
Worker.onStopped
الآن على مَعلمةisCancelled
إضافية يتم ضبطها علىtrue
عند إلغاءWorker
صراحةً.
الإصدار 1.0.0-alpha02
24 أيار (مايو) 2018
إصلاح الأخطاء
- تم حلّ
NullPointerException
فيState.isFinished()
. b/79550068 - تم إصلاح مشكلة أدّت إلى إعادة جدولة
Worker
في Application.onCreate()
. b/79660657 - تم إصلاح مشكلة كانت تتيح جدولة المزيد من العمل أكثر مما يسمح به نظام التشغيل. b/79497378
- تم نقل عملية تنظيف عمليات قفل التنشيط المرتبطة بعمليات
Worker
إلى سلسلة المهام في الخلفية. - يتم الآن تنفيذ عملية
AlarmManager
بشكل صحيح لتنظيف البيانات عند اكتمال كل الأعمال المعلّقة. - تم إصلاح طلبات بحث SQL لتنظيف البيانات التي كانت تؤثر في اللغات غير الإنجليزية. b/80065360
- تمت إضافة إمكانية استخدام
float
فيData
. b/79443878 - يعرض
Data.Builder.putAll()
الآن مثيلًا منBuilder
. b/79699162 - المزيد من javadoc والإصلاحات في المستندات. b/79691663
تغييرات واجهة برمجة التطبيقات
- يمكن أن تتفاعل
Worker
مع عملية الإيقاف. يمكن استخدامWorker.isStopped()
للتحقّق مما إذا تم إيقافWorker
. يمكن استخدامWorker.onStopped()
لتنفيذ عمليات تنظيف بسيطة. - تعرض واجهة برمجة التطبيقات
Worker.getTags()
Set
من العلامات المرتبطة بالصفحةWorker
. - تمت إضافة
javax.time.Duration
حمولة زائدة لواجهات برمجة التطبيقات التي تأخذ مجموعة من المدة وTimeUnit
. يتم الاحتفاظ بهذه البيانات من قِبل@RequiresApi(26)
. - تم نقل إضافات
WorkManager
من حزمةandroidx.work.ktx
إلى حزمةandroidx.work
. تم إيقاف الإضافات القديمة نهائيًا وستتم إزالتها في إصدار مستقبلي. - تم إيقاف
Configuration.withExecutor()
نهائيًا. استخدِمConfiguration.setExecutor()
بدلاً من ذلك.
الإصدار 1.0.0-alpha01
8 أيار (مايو) 2018
يسهّل WorkManager جدولة تنفيذ
عمل الخلفية المضمون والمراعي للقيود. رقم الإصدار الأولي هو 1.0.0-alpha01
.