مدير العمل
التعديل الأخير | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
4 سبتمبر 2024 | 2.9.1 | - | - | 2.10.0-alpha03 |
إعلان التبعيات
لإضافة تبعية على WorkManager، يجب إضافة مستودع Google Maven إلى المشروع:
أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle
لـ
لتطبيقك أو الوحدة التي تستخدمها:
Groovy
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
لمزيد من المعلومات حول استخدام إضافات Kotlin، يُرجى الاطّلاع على وثائق ktx.
لمزيد من المعلومات عن العناصر التابعة، يُرجى الاطّلاع على إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى إلقاء نظرة على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية عن طريق بالنقر فوق زر النجمة.
يُرجى الاطّلاع على مستندات أداة تتبُّع المشاكل. لمزيد من المعلومات.
الإصدار 2.10
الإصدار 2.10.0-alpha03
4 سبتمبر 2024
تم طرح androidx.work:work-*:2.10.0-alpha03
. يحتوي الإصدار 2.10.0-alpha03 على عمليات التنفيذ هذه.
الميزات الجديدة
- تمت إضافة علامات تتبُّع إلى قسم "الوظائف" من
WorkManager
، ما يجعل فهم أمر "adb shell dumpsys jobscheduler" أسهل كثيرًا لأنّه سيحتوي على اسم العامل الذي يتم إعدامه. تتم أيضًا إضافة أقسام التتبُّع حول المناطق الرئيسية فيWorkManager
.
التغييرات في واجهة برمجة التطبيقات
- تمّ الآن تجميع WorkManager 2.10.0 باستخدام 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) - إضافة معالجات استثناءات مخصَّصة للعاملين (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)
الإصدار
29 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.work:work-*:2.9.0
. يحتوي الإصدار 2.9.0 على عمليات الإلغاء هذه.
تغييرات مهمة منذ الإصدار 2.8.0
- يمكن المراقبة عبر
Flow
-ث. بدلاً منLiveData
، يمكن الآن تتبّع مستوى تقدّم العامل من خلال مسارات التدفق عبرWorkManager.getWorkInfosFlow
وطرق مشابهة. - أمّا الآن، فيقدّم
WorkManager
تلميحًا عن سبب إيقاف أحد العمال في السابق. ويمكن الاستعلام عنه من العامل نفسه باستخدام طريقةgetStopReason()
أو منWorkInfo
عبرgetStopReason()
. - تحديد المواعيد الدقيقة للعاملين بشكل دوري من خلال "
setNextScheduleTimeOverride
" يتيح ذلك الحساب الديناميكي للجدول الزمني التالي للعمل الدوري، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات إعادة التحميل التكيُّفية، أو السلوك المخصّص لإعادة المحاولة، أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون تحرّك. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
بهذه الأساليب لتجنُّب إلغاء عامل يعمل حاليًا أثناء جدولة العامل التالي. - اختبار WorkManager مع إنتاج مطابقة سلاسل المحادثات. يمكن استخدام
ExecutorsMode.PRESERVE_EXECUTORS
فيinitializeTestWorkManager
للاحتفاظ بأدوات التنفيذ التي تم ضبطها فيConfiguration
واستخدام سلسلة المحادثات الرئيسية الحقيقية. - تم نقل واجهات برمجة تطبيقات Coroutines، مثل
CoroutineWorker
، من وقت تشغيل إضافي للعمل-ktx إلى وقت تشغيل العمل الرئيسي. حقل Work-runtime-ktx فارغ الآن.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة "
stopReason
" إلىWorkInfo
. تجعلstopReason
متاحًا بعد تشغيل العامل. وقد يكون من المفيد الإبلاغ عنstopReason
بطريقة سهلة الاستخدام، لأنّه بعد إيقاف أحد العمال، قد يتم إيقاف التطبيق بسرعة كبيرة. (I21386) - السماح بضبط
Clock
من خلال الإعدادات واستخدامها لتنفيذ تسلسل تنفيذ اختبارات العمال (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
الآن حدًّا منفصلاً على العاملين في معرّف الموارد المنتظم (URI) للمحتوى لمنحهم خانات مضمونة فيJobScheduler
لتجنُّب فقدان تحديثات المحتوى بسبب الحِمل الزائد. يمكن ضبط الحدّ باستخدامConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تمت إضافة القيود إلى
WorkInfo
. (I162c0)
الإصدار 2.9.0-rc01
18 تشرين الأول (أكتوبر) 2023
تم طرح androidx.work:work-*:2.9.0-rc01
. يحتوي الإصدار 2.9.0-rc01 على هذه عمليات التنفيذ.
- لم تطرأ أي تغييرات منذ آخر إصدار تجريبي
الإصدار 2.9.0-beta01
6 أيلول (سبتمبر) 2023
تم طرح androidx.work:work-*:2.9.0-beta01
. يحتوي الإصدار 2.9.0-beta01 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة ثوابت لأسباب التوقّف التي يعرضها
WorkInfo.stopReason
وListenableWorker.stopReason
(I0cc00).
الإصدار 2.9.0-alpha02
26 تموز (يوليو) 2023
تم طرح androidx.work:work-*:2.9.0-alpha02
. يحتوي الإصدار 2.9.0-alpha02 على هذه عمليات التنفيذ.
الميزات الجديدة
- أمّا الآن، فيقدّم
WorkManager
تلميحًا عن سبب إيقاف أحد العمال في السابق. ويمكن البحث عنه من خلال عامل تشغيل نفسه باستخدام طريقةgetStopReason()
أو منWorkInfo
عبرgetStopReason()
.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة "
stopReason
" إلىWorkInfo
. ويوفِّر "stopReason
" بعد تشغيل العامل. وقد يكون من المفيد الإبلاغ عن "stopReason
" بطريقة سهلة الاستخدام، لأنّه بعد إيقاف أحد العمال، قد يتم إيقاف التطبيق نفسه بسرعة كبيرة. (I21386) - السماح بضبط الساعة من خلال عملية الإعداد واستخدامها لتنفيذ تسلسل تنفيذ اختبارات العمال (Ic586e)
- تمت إضافة طريقة
getStopReason()
إلىListenableWorker
تقدّم تلميحًا بشأن إيقاف العامل. (I07060) - تمت إضافة
WorkManagerTestInitHelper#closeWorkDatabase()
لتجنُّب تحذير Closeguard بشأن تسرُّب الموارد. (Ia8d49)
إصلاح الأخطاء
- تمت إضافة إمكانية تجاوز
overrideNextScheduleTime
باستخدامTestDriver
وحلّ المشاكل المتعلّقة بقابلية الاختبار. (Ic2905)
الإصدار 2.9.0-alpha01
7 حزيران (يونيو) 2023
تم طرح androidx.work:work-*:2.9.0-alpha01
. يحتوي الإصدار 2.9.0-alpha01 على هذه عمليات التنفيذ.
الميزات الجديدة
- يمكن المراقبة عبر
Flow
-ث. بدلاً منLiveData
، يمكن الآن تتبّع مستوى تقدّم العامل من خلال مسارات التدفق عبرWorkManager.getWorkInfosFlow
وطرق مشابهة. - تحديد المواعيد الدقيقة للعاملين بشكل دوري من خلال "
setNextScheduleTimeOverride
" يسمح ذلك بالحساب الديناميكي للجدول الزمني التالي للعمل الدوري، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات إعادة التحميل التكيُّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون تحرّك. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
بهذه الأساليب لتجنُّب إلغاء عامل قيد التشغيل حاليًا أثناء جدولة العامل التالي. - اختبار "
WorkManager
" باستخدام سلاسل المحادثات المطابقة لمرحلة الإنتاج ويمكن استخدامExecutorsMode.PRESERVE_EXECUTORS
للاحتفاظ بأدوات التنفيذ التي تم ضبطها فيConfiguration
واستخدام سلسلة المحادثات الرئيسية الحقيقية. - تم نقل واجهات برمجة تطبيقات Coroutines، مثل
CoroutineWorker
، من العنصر الإضافيwork-runtime-ktx
إلى العنصر الرئيسي "work-runtime
".work-runtime-ktx
فارغ الآن.
التغييرات في واجهة برمجة التطبيقات
- الدالة الإنشائية
WorkInfo
متاحة للجميع الآن، ويمكن أن تكون مفيدة في الاختبار. (Ia00b6، b/209145335) - أصبح
work-runtime-ktx
فارغًا الآن، وتتوفّر الآن أداةCoroutineWorker
وبرامج خدمات أخرى خاصة بلغة kotlin في عنصرwork-runtime
الرئيسي. (I71a9a) - تمت إضافة طريقة
setNextScheduleTimeOverride
، التي تتيح ضبط جداول العمل الدورية بشكل دقيق (I3b4da). - تمت إعادة تسمية "
getEarliestRunTimeMillis
" إلى "getNextScheduleTimeMillis
". (I2bd7a) - تتم إضافة معلومات وقت التشغيل المُجدوَل التالية إلى
WorkInfo
. (I797e4) - تتم إضافة معلومات التأخير الأولي والدورية إلى
WorkInfo
. (I52f2f) - تمت إضافة طريقة مراقبة العاملين من خلال التدفقات عبر الطرق
getWorkInfosByTagFlow
وgetWorkInfoByIdFlow
وgetWorkInfosForUniqueWorkFlow
وgetWorkInfosFlow
(If122a) - تمت إضافة تعليقات
@RequiresApi(...)
التوضيحية الناقصة إلى القيود. المرادفات والخصائص. وتتم محاذاة هذه الكلمات الآن مع التعليقات التوضيحية المقابلة على أدوات التصنيف فيConstraints.Builder
التي كانت موجودة من الإصدارات الأولى منWorkManager
. (I6d7d2) - يفرض
WorkManager
الآن حدًّا منفصلاً على العاملين في معرّف الموارد المنتظم (URI) للمحتوى لمنحهم خانات مضمونة فيJobScheduler
لتجنُّب فقدان تحديثات المحتوى بسبب الحِمل الزائد. يمكن ضبط الحد عبرConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تمت إضافة القيود إلى
WorkInfo
. (I162c0)
الإصدار 2.8
الإصدار 2.8.1
22 آذار (مارس) 2023
تم طرح androidx.work:work-*:2.8.1
. يحتوي الإصدار 2.8.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح خطأ ANR في
RescheduleReceiver
الذي لم يكن يتعامل بشكل صحيح مع عمليتَي بث متزامنتين في السابق. (b/236906724)
الإصدار
8 شباط (فبراير) 2023
تم طرح androidx.work:work-*:2.8.0
. يحتوي الإصدار 2.8.0 على هذه الالتزامات.
تغييرات مهمة منذ الإصدار 2.7.0
الميزات الجديدة
- تمت إضافة إمكانية تحديث
WorkRequests
بطريقة غير تطفلية، مع الحفاظ على وقت القائمة الأصلي والتسلسل وما إلى ذلك. يمكنك الاطّلاع على مشاركة مدوّنة تفصيلية حول هذه الميزة، بالإضافة إلى مستندات JavaScript لكل من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 3getForegroundInfo
تعرضSingle
ويمكن استخدامها بدلاً منgetForegroundInfoAsync
التي تعرضListenableFuture
. (b/203851459)- يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام
Constraints.Builder
، الذي يناسب مستخدمي Kotlin. (Idc390، b/137568653) - تمت إضافة إمكانية التحقّق مما إذا تم إعداد
WorkManager
. وتمت أيضًا إضافة واجهة برمجة تطبيقاتgetConfiguration()
جديدة لمطوّري المكتبات للحصول على الإعدادات التي تم إعدادWorkManager
باستخدامها. (I6eff3، b/212300336)
إصلاح الأخطاء
- تم إصلاح مشكلة في نظام الجدولة الجشع الذي يمنع العاملين من العمل فورًا عندما يكون التحميل قيد التحميل. (I9686b، b/248111307)
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح إذنPOST_NOTIFICATIONS
في الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278) - انشر عمليات الإلغاء في
CoroutineScope
علىListenableFuture
عند استخدامsuspendCancellableCoroutine
.
الإصدار 2.8.0-rc01
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.work:work-*:2.8.0-rc01
. يحتوي الإصدار 2.8.0-rc01 على هذه عمليات التنفيذ.
الميزات الجديدة
- لا تتوفّر ميزات جديدة في هذا الإصدار. هذا في الأساس تغيير أثناء الإصدار
الإصدار 2.8.0-beta02
9 تشرين الثاني (نوفمبر) 2022
تم طرح androidx.work:work-*:2.8.0-beta02
. يحتوي الإصدار 2.8.0-beta02 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تم إصلاح طريقة
equals
فيWorkInfo
، والتي لم تأخذ في الاعتبار معلومات الجيل الجديد. (4977cc)
الإصدار 2.8.0-beta01
5 تشرين الأول (أكتوبر) 2022
تم طرح androidx.work:work-*:2.8.0-beta01
. يحتوي الإصدار 2.8.0-beta01 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة في نظام الجدولة الجشع الذي يمنع العاملين من العمل فورًا عندما يكون التحميل قيد التحميل. (I9686b، b/248111307)
الإصدار 2.8.0-alpha04
7 أيلول (سبتمبر) 2022
تم طرح androidx.work:work-*:2.8.0-alpha04
. يحتوي الإصدار 2.8.0-alpha04 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
WorkerInfo.getGeneration()
وWorkerParameters.getGeneration()
تؤدي إلى إنشاء عامل. لدى العامل أجيال متعددة، إذا تم تعديله من خلالWorkManager.updateWork
أوWorkManager.enqueueUniquePeriodicWork
باستخدامExistingPeriodicWorkPolicy.UPDATE
. لاحظ أنه إذا كان العامل قيد التشغيل في الوقت الحالي، فمن الممكن لهذه الطريقة عرض جيل أحدث من جيل العامل قيد التشغيل حاليًا إذا حدث تحديث أثناء تنفيذ العامل. (I665c5، b/219446409) (I128a9، b/219446409) - تمت إضافة
InitializationExceptionHandler
، وهو معالج استثناء يمكن استخدامه لتحديد ما إذا كانت هناك مشاكل عند محاولة إعدادWorkManager
. (I061de)
الإصدار 2.8.0-alpha03
10 آب (أغسطس) 2022
تم طرح androidx.work:work-*:2.8.0-alpha03
. يحتوي الإصدار 2.8.0-alpha03 على هذه عمليات التنفيذ.
الميزات الجديدة
- تمت إضافة إمكانية تعديل "
WorkRequests
" بطريقة غير متداخلة، مع الحفاظ على وقت الإدراج الأصلي والسلسلة وما إلى ذلك. يُرجى الانتقال إلىWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
للحصول على مزيد من التفاصيل.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل الأعمال مع الحفاظ على وقت الإدراج الأصلي والتسلسل.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهي تشبهREPLACE
الحالية، ولكنها أقل تداخلاً، فهي لا يلغي عامل التشغيل إذا كان يعمل حاليًا مع الحفاظ على وقت الإدراج، إذ يتم احتساب مدة التأخّر الأولية والفترة من وقت الإدراج الأصلي بدلاً من وقت التعديل. تم إيقاف الدالةREPLACE
نهائيًا لتقليل الالتباس بين الاسمين "REPLACE
" و"UPDATE
" الذي تتشابه أسماؤهما إلى حد كبير. إذا أردت الاحتفاظ بالدلالات الدلالية السابقة للسمةREPLACE
، يمكن استخدامCANCEL_AND_REENQUEUE
المُضافة حديثًا، والتي تتطابق معREPLACE
. (I985ed، b/219446409) - أضِف إمكانية اعتراض استثناءات الجدولة من خلال تحديد
SchedulingExceptionHandler
. (I033eb) - أدوات مساعدة مضمّنة لـ
OneTimeWorkRequest
تم نقلPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، وb/209145335).
إصلاح الأخطاء
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلّب منح إذن POST_NOTIFICATIONS في الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (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
الإصدار
13 تشرين الأول (أكتوبر) 2021
تم طرح androidx.work:work-*:2.7.0
. يحتوي الإصدار 2.7.0 على هذه الالتزامات.
تغييرات مهمة منذ الإصدار 2.6.0
يقدِّم تطبيق WorkManager واجهة برمجة تطبيقات
WorkRequest.Builder.setExpedited(...)
جديدة للمساعدة في فرض قيود على الخدمات التي تعمل في المقدّمة في الإصدار 12 من نظام التشغيل Android.عند استخدام
setExpedited(...)
، يفوّض WorkManager تسريع المهام في Job Scheduler بدءًا من 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
لأنّ واجهات برمجة التطبيقات للنظام الأساسي الأساسية في الإصدار 12 (S) من نظام التشغيل Android مستقرة. (aosp/1792806)
إصلاح الأخطاء
- تقديم رسالة خطأ أفضل للعاملين المسرّعين الذين لا ينفّذون
getForegroundInfoAsync()
. (aosp/1809376)
الإصدار 2.7.0-alpha05
21 يوليو 2021
تم طرح androidx.work:work-*:2.7.0-alpha05
. يحتوي الإصدار 2.7.0-alpha05 على هذه عمليات التنفيذ.
يحتوي هذا الإصدار أيضًا على إصلاحات للأخطاء من إصدار WorkManager 2.6.0-beta02
.
الإصدار 2.7.0-alpha04
2 حزيران (يونيو) 2021
تم طرح androidx.work:work-*:2.7.0-alpha04
.
يحتوي هذا الإصدار أيضًا على التغييرات من الإصدار 2.6.0-beta01.
التغييرات في واجهة برمجة التطبيقات
- لم يعُد
ListenableWorker.setForegroundAsync()
متوقفًا نهائيًا. - ننصح باستخدام واجهة برمجة تطبيقات
WorkRequest.Builder.setExpedited(...)
إن أمكن. لتوفير دعم أفضل في الحالات التي لا يخضع فيها التطبيق لقيود الخدمة التي تعمل في المقدّمة، يمكن للمطوّرين استخدامListenableWorker.setForegroundAsync()
API. - في حال استدعاء الدالة
ListenableWorker.setForegroundAsync()
، سيؤدي ذلك إلى عرض ForegroundServiceStartNotAllowedException عندما يخضع التطبيق لقيود الخدمة التي تعمل في المقدّمة.
إصلاح الأخطاء
- عند إعادة جدولة المهام المُعجَّلة، لن يتم تسريعها بعد ذلك. وتصبح وظائف عادية.
الإصدار 2.7.0-alpha03
21 نيسان (أبريل) 2021
تم طرح androidx.work:work-*:2.7.0-alpha03
. يحتوي الإصدار 2.7.0-alpha03 على هذه عمليات التنفيذ.
الميزات الجديدة
من WorkManager
2.6.0-alpha02
: تتم إضافة دعم للعاملين الذين يمكن تشغيله في أي عملية. (Iaf200)من WorkManager
2.6.0-alpha02
: تمت إضافةRemoteCoroutineWorker
، وهو تنفيذ لـRemoteListenableWorker
يمكن ربطه بعملية عن بُعد. (I30578)
التغييرات في واجهة برمجة التطبيقات
- من WorkManager
2.6.0-alpha02
:تمت إضافة اعتماد لقيد شبكةTEMPORARILY_UNMETERED
. (I08d5e) - من WorkManager
2.6.0-alpha02
:دعم العاملين متعدد العمليات فيsetProgressAsync()
. (Ib6d08) - من WorkManager
2.6.0-alpha02
:اضبطWorkManagerInitializer
على "علني" حتى يمكن لحساباتandroidx.startup.Initializer
الأخرى استخدام هذه العناصر كملحقات. (I5ab11)
الإصدار 2.7.0-alpha02
10 آذار (مارس) 2021
تم طرح androidx.work:work-*:2.7.0-alpha02
. يحتوي الإصدار 2.7.0-alpha02 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- يجب ضبط سياسة قابلية التغيّر في
PendingIntent
بشكل صريح لإصلاح عطل عند استهداف الإصدار 12 من نظام التشغيل Android. (b/180884673)
الإصدار 2.7.0-alpha01
18 شباط (فبراير) 2021
تم طرح androidx.work:work-*:2.7.0-alpha01
. يحتوي الإصدار 2.7.0-alpha01 على هذه عمليات التنفيذ.
الميزات الجديدة
يقدِّم WorkManager واجهة برمجة تطبيقات
WorkRequest.Builder.setExpedited(...)
جديدة لمراعاة قيود الخدمة التي تعمل في المقدّمة في الإصدار 12 من نظام التشغيل Android.لم يعد بإمكان التطبيقات تشغيل خدمة تعمل في المقدّمة عند تشغيلها في الخلفية. وبالتالي، لتوفير دعم أفضل للعمل الذي يستمرّ لفترة طويلة والذي كان مرتبطًا في السابق بدورة حياة الخدمة التي تعمل في المقدّمة، يمكن للتطبيقات وضع علامة مسرّعة على
WorkRequest
.وهي بديل لواجهات برمجة التطبيقات
setForegroundAsync(...)
/setForeground(...)
التي تم إيقافها الآن.عند استخدام
setExpedited(...)
، يفوّض WorkManager تسريع المهام فيJobScheduler
بدءًا من Android 12، مع توفير التوافق مع الإصدارات القديمة من Android من خلال تفويض الخدمات التي تعمل في المقدّمة.
التغييرات في واجهة برمجة التطبيقات
- يمكنك إضافة دعم لنماذج
WorkRequest
السريعة.
الإصدار
الإصدار
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 عند استخدام Android Studio Arctic Fox.
الإصدار 2.5.0-rc01
13 كانون الثاني (يناير) 2021
تم طرح androidx.work:work-*:2.5.0-rc01
. يحتوي الإصدار 2.5.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في تعذُّر إيقاف
getWorkInfosLiveData
بشكل صحيح بعد تعديل الكيانات عند استخدام واجهة برمجة التطبيقات المستندة إلىWorkQuery
. (aosp/1540566، b/173769028) - تم إصلاح خطأ عدم وضع علامة على معاملات قاعدة البيانات كناجحة في بعض الحالات النادرة. يتسبب ذلك في حدوث مشاكل على بعض أجهزة Motorola. (aosp/1535368، b/175944460)
- تم إصلاح خطأ لتجاهل
NoSuchElementException
عند محاولة إلغاء الربط من عملية تالفة. (aosp/1530589) - يمكنك تحسين "
ConstraintTrackingWorker
" لإيقافListenableWorker
فقط إذا لم يسبق أن تم إيقافه. (aosp/1496844، b/172946965) - تحديث مكتبات androidx.work لاستهداف Java 8 (Ibd2f2)
الإصدار 2.5.0-beta02
2 كانون الأول (ديسمبر) 2020
تم طرح androidx.work:work-*:2.5.0-beta02
. يحتوي الإصدار 2.5.0-beta02 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح الخطأ في
androidx.work:work-multiprocess
الذي كان يؤدي فيه WorkManager إلى حظر سلسلة عمليات الاتصال عن غير قصد عند محاولة الربط بالعملية المحددة. (aosp/1475538) - تم إصلاح الخطأ المتمثل في عدم حدوث تسوية
PeriodicWorkRequest
بشكل صحيح. (b/172475041، aosp/1489577) - تمت إضافة حل بديل لخطأ في النظام الأساسي عند إيقاف الخدمة التي تعمل في المقدّمة عند استخدام واجهات برمجة تطبيقات
setForeground*
. (b/170924044، aosp/1489901)
الإصدار 2.5.0-beta01
28 تشرين الأول (أكتوبر) 2020
تم طرح androidx.work:work-*:2.5.0-beta01
. يحتوي الإصدار 2.5.0-beta01 على هذه الالتزامات.
الميزات الجديدة
- تقلّل ميزة "
WorkManager
" تلقائيًا عددWorkRequest
التي يمكن أن تحصل عليها أداة الجدولة أثناء المعالجة. لا تزال الطلبات جارية بأمر FIFO. (aosp/1455228) - يحاول
WorkManager
الاسترداد عندما يكون مخزن بيانات التطبيق في حالة سيئة. (aosp/1463103)
إصلاح الأخطاء
- عند مقاطعة
ListenableWorker
، ضَع علامةENQUEUED
عليها على الفور حتى تتمكّن من إعادة جدولتها في وقت لاحق. (aosp/1455618، b/170273988)
الإصدار 2.5.0-alpha03
14 تشرين الأول (أكتوبر) 2020
تم طرح androidx.work:work-*:2.5.0-alpha03
. يحتوي الإصدار 2.5.0-alpha03 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- لا يستخدم كل من
TestListenableWorkerBuilder
وTestWorkerBuilder
أنواعًا أولية. (I883ad، b/169787349)
إصلاح الأخطاء
- استخدِم
ApplicationInfo
لتحديد اسم عملية التطبيق التلقائية. (b/168716641، aosp/1429950) - إصلاح قواعد إذن الوصول إلى
RemoteWorkManager
وRemoteWorkContinuation
لم يعُد هناك علامة@Restricted
على واجهات برمجة التطبيقات هذه. (aosp/1432091) - إصلاح قواعد Proguard لـ
:work:work-multiprocess
(aosp/1432091) - يمكنك تحسين مراحل نشاط الإشعارات للعمل الطويل الأمد المرتبط بخدمة تعمل في المقدّمة. (b/168502234، aosp/1431331)
الإصدار 2.5.0-alpha02
16 أيلول (سبتمبر) 2020
تم طرح androidx.work:work-*:2.5.0-alpha02
. يحتوي الإصدار 2.5.0-alpha02 على هذه عمليات التنفيذ.
الميزات الجديدة
- أضِف واجهة برمجة تطبيقات إلى WorkQuery لتتمكّن من استخدام
id
لطلب بحثWorkInfo
. (aosp/1412372، b/157335295) - يتوافق تطبيق WorkManager بشكل أفضل مع التطبيقات التي تستخدم عمليات متعددة مع عنصر جديد (
androidx.work:work-multiprocess:*
). تساعد هذه الأداة الجديدة في حل بعض المشاكل التي تواجهها التطبيقات الكبيرة الحجم، ومنها:- عادة ما يحتاج WorkManager إلى إعداده في كل عملية تطبيق. هذا ليس أمرًا رائعًا لأن هناك زيادة في تناقض SQLite والذي بدوره يسبب مشكلات أخرى. يحتوي WorkManager الآن على واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية التطبيق الأساسية باستخدام
Configuration#setDefaultProcessName(processName)
.processName
هو اسم عملية مؤهل بالكامل يبدو مثلpackageName:processName
(مثلcom.example:remote
). - مجموعة من واجهات برمجة التطبيقات الجديدة:
RemoteWorkManager
وRemoteWorkContinuation
إلىenqueue
وcancel
وquery
طلبات عمل. لا تتضمّن واجهات برمجة التطبيقات هذه صيغLiveData
لتجنُّب تضارب SQLite في عمليات متعددة. تتم إعادة توجيه جميع المكالمات إلىenqueue
وcancel
وquery
إلى عملية في تطبيقprimary
باستخدام AIDL ويتم إرجاعListenableFuture
بطلاقة. (aosp/1392657، aosp/1411210، aosp/1412215، aosp/1417713)
- عادة ما يحتاج WorkManager إلى إعداده في كل عملية تطبيق. هذا ليس أمرًا رائعًا لأن هناك زيادة في تناقض SQLite والذي بدوره يسبب مشكلات أخرى. يحتوي WorkManager الآن على واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية التطبيق الأساسية باستخدام
التغييرات في واجهة برمجة التطبيقات
- يستخدم WorkManager الآن عمليات
WorkRequest
المكتملة التي لا تحتوي على تبعيات غير مكتملة بشكل أكبر. تم تغيير مدة المخزن المؤقت من7
يوم إلى يوم واحد (1
). (aosp/1419708)
إصلاح الأخطاء
- يعمل WorkManager الآن على تسوية المهام بشكل استباقي حتى تتم مزامنة مهام
WorkRequest
وJobScheduler
عند إعدادWorkManager
. (aosp/1412794، b/166292069)
الإصدار 2.5.0-alpha01
19 آب (أغسطس) 2020
تم طرح androidx.work:work-*:2.5.0-alpha01
. يحتوي الإصدار 2.5.0-alpha01 على هذه عمليات التنفيذ.
الميزات الجديدة
- سيتم إجراء تغييرات على واجهات برمجة التطبيقات الداخلية التي تتيح لنا توفير أدوات أفضل في
WorkManager
من الآن فصاعدًا. يُرجى متابعتنا لمعرفة المزيد من الأخبار.
إصلاح الأخطاء
- التعامل مع
SecurityException
عند تتبُّع حالة الشبكة على بعض الأجهزة (aosp/1396969)
مساهمة خارجية
- يجب حلّ المشاكل في مستندات "
ArrayCreatingInputMerger
" من إعداد Zac Sweers (github/43).
الإصدار
الإصدار
22 تموز (يوليو) 2020
تم طرح androidx.work:work-*:2.4.0
. يحتوي الإصدار 2.4.0 على عمليات الالتزام هذه.
التغييرات الرئيسية منذ الإصدار 2.3.0
- أصبحت أداة الجدولة أثناء المعالجة في "
WorkManager
" أكثر فعالية الآن. في السابق، كانت دالةScheduler
قيد المعالجة تنظر فقط في تنفيذ الأعمال التي لم يتم تأجيلها والتي تم استيفاء قيودها. أمّا الآن، فتتتبّع أداة الجدولة أثناء العمليةWorkRequest
التي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequests. لا تلتزمScheduler
أثناء العملية أيضًا بحدود الجدولة (ولكنها لا تزال تقتصر على حجمExecutor
الذي يستخدمه WorkManager). يعني ذلك أنّ التطبيق يمكنه الآن تنفيذ المزيد من طلبات WorkRequest عندما يكون التطبيق في المقدّمة. لإدارة تنفيذ الأعمال المتأخّرة في المقدّمة، توفِّرWorkManager
أيضًاRunnableScheduler
جديدًا قابلاً للضبط. (aosp/1185778) - يدعم WorkManager الآن RxJava 3. لاستخدام RxJava 3، يجب تضمين الاعتمادية التالية:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - تمت إضافة إمكانية طلب البحث عن
WorkInfo
باستخدامWorkQuery
. ويُفيد ذلك عندما يريد المطوّرون طلب بحث عنWorkInfo
من خلال مجموعة من سمات متعدّدة. للحصول على مزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder.fromStates(...)
أوWorkQuery.Builder. fromTags(...)
أوWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230، b/143847546) يمكنك إضافة إمكانية طلب معلومات التشخيص من
WorkManager
باستخدام:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
يوفر ذلك الكثير من المعلومات المفيدة، بما في ذلك:
- طلبات العمل التي تم إكمالها في آخر 24 ساعة.
- طلبات العمل قيد التشغيل حاليًا.
- طلبات العمل المجدولة. (aosp/1235501)
يمكنك إضافة السمة
ExistingWorkPolicy.APPEND_OR_REPLACE
التي تشبه السمةAPPEND
، ولكنّها تستبدل سلسلة متطلبات أساسية ملغاة أو لم تنجح. (b/134613984، aosp/1199640)توفير إمكانية إضافة
RunnableScheduler
مخصّص لتتبُّع طلبات WorkRequests التي يجب تنفيذها في المستقبل تُستخدَم هذه الطريقة من قِبل أداة الجدولة قيد المعالجة. (aosp/1203944)يمكنك توفير إمكانية إضافة المصانع بشكل ديناميكي للتفويض إليها، عند استخدام
DelegatingWorkerFactory
. (b/156289105، aosp/1309745)اتّبِع الإجراءات المتّبعة في تتبُّع القيود
BATTERY_NOT_LOW
بشكل أوثق مع المنصة. (aosp/1312583)يستخدم الآن نظام الجدولة أثناء المعالجة واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويفيد ذلك في توفير دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
قواعد أداة Lint الجديدة التي تفرض ما يلي:
- استخدام سياسة
foregroundServiceType
المناسبة عند استخدام واجهات برمجة تطبيقاتsetForegroundAsync()
. (b/147873061، aosp/1215915) - تحديد معرّفات Jobscheduler التي يجب أن يستخدمها WorkManager عند استخدام واجهات برمجة تطبيقات JobService مباشرةً. aosp/1223567
- تمت إضافة قاعدة Lint جديدة تضمن أن
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
- استخدام سياسة
سيتم الآن الإشارة إلى المكالمات إلى
setForegroundAsync()
التي لا تكتمل قبل إكمالListenableWorker
عبرIllegalStateException
علىListenableFuture
الذي تم إرجاعه. (aosp/1262743)إصلاح خطأ عدم توقف "
ForegroundService
" بعد توقّف تشغيل "Worker
" في المقدّمة. (b/155579898 وaosp/1302153)إصلاح خطأ يحاول فيه
WorkManager
تنفيذ نُسخ متعددة منWorker
المرتبطة بخدمة تعمل في المقدّمة (b/156310133، aosp/1309853)
الإصدار 2.4.0-rc01
24 حزيران (يونيو) 2020
تم طرح androidx.work:work-*:2.4.0-rc01
. يحتوي الإصدار 2.4.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- يستخدم الآن نظام الجدولة أثناء المعالجة واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويفيد ذلك في توفير دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)
الإصدار 2.4.0-beta01
20 أيار (مايو) 2020
تم طرح الإصدارات androidx.work:work-gcm:2.4.0-beta01
وandroidx.work:work-runtime:2.4.0-beta01
وandroidx.work:work-runtime-ktx:2.4.0-beta01
وandroidx.work:work-rxjava2:2.4.0-beta01
وandroidx.work:work-testing:2.4.0-beta01
. يحتوي الإصدار 2.4.0-beta01 على هذه الالتزامات.
إصلاح الأخطاء
- إصلاح خطأ عدم توقف "
ForegroundService
" بعد توقّف تشغيل "Worker
" في المقدّمة. (b/155579898 وaosp/1302153) - إصلاح خطأ يحاول فيه
WorkManager
تنفيذ نُسخ متعددة منWorker
مرتبطة بخدمة تعمل في المقدّمة (b/156310133 وaosp/1309853) - يمكنك توفير إمكانية إضافة المصانع بشكل ديناميكي للتفويض إليها، عند استخدام
DelegatingWorkerFactory
. (b/156289105، aosp/1309745) - اتّبِع الإجراءات المتّبعة في تتبُّع القيود
BATTERY_NOT_LOW
بشكل أوثق مع المنصة. (aosp/1312583)
الإصدار 2.4.0-alpha03
29 نيسان (أبريل) 2020
تم طرح androidx.work:work-*:2.4.0-alpha03
. يحتوي الإصدار 2.4.0-alpha03 على هذه عمليات التنفيذ.
الميزات الجديدة
- يدعم WorkManager الآن RxJava 3. لاستخدام RxJava 3، يجب تضمين الاعتمادية التالية:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - تمت إضافة قاعدة Lint جديدة تضمن أن
ListenableWorker
عمليات التنفيذ أصبحت الآنpublic
عند استخدامWorkerFactory
التلقائي. (aosp/1291262)
التغييرات في واجهة برمجة التطبيقات
- سيؤدي الاتصال بالرقم
setProgressAsync()
بعد انتهاء تنفيذListenableWorker
إلى الإشارة الآن إلىException
عبرListenableFuture
. (aosp/1285494) - تم وضع علامة
final
الآن على "WorkQuery.Builder
". (aosp/1275037) - تمت إعادة تسمية طرق المصنع (
WorkQuery.Builder
)withStates
وwithTags
وwithUniqueWorkNames
إلىfromStates
وfromTags
وfromUniqueWorkNames
على التوالي. (aosp/1280287)
إصلاح الأخطاء
- تجاهُل
SecurityException
عند تتبُّع حالة الشبكة لأحد الأجهزة. (b/153246136، aosp/1280813)
الإصدار 2.4.0-alpha02
1 نيسان (أبريل) 2020
تم طرح androidx.work:work-*:2.4.0-alpha02
. يحتوي الإصدار 2.4.0-alpha02 على هذه عمليات التنفيذ.
الميزات الجديدة
- تمت إضافة قاعدة Lint جديدة تحذّر عندما تتطلّب
WorkRequest
كلاً منConstraints.setRequiresCharging(...)
وConstraints.setRequiresDeviceIdle(...)
. لا يتم شحن بعض الأجهزة مطلقًا وتكون في وضع عدم النشاط في الوقت نفسه. لذلك، سيتم تنفيذ هذه الطلبات بمعدل أقل مما هو متوقع. (aosp/1253840)
التغييرات في واجهة برمجة التطبيقات
تمت إضافة إمكانية طلب البحث عن
WorkInfo
باستخدامWorkQuery
. ويُفيد ذلك عندما يريد المطوّرون طلب بحث عنWorkInfo
من خلال مجموعة من سمات متعدّدة. للحصول على مزيد من المعلومات، يُرجى الاطّلاع علىWorkQuery.Builder withStates(...)
أوWorkQuery.Builder withTags(...)
أوWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230، b/143847546)سيتم الآن الإشارة إلى المكالمات إلى
setForegroundAsync()
التي لا تكتمل قبل إكمالListenableWorker
عبرIllegalStateException
علىListenableFuture
الذي تم إرجاعه. (aosp/1262743)
إصلاح الأخطاء
- تم إصلاح قاعدة Lint التي تتحقق من مُدد الفواصل الزمنية غير الصالحة لمدة
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) - إصلاح الوبر
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 الحد الأقصى المسموح به لعدد المهام في Job Scheduler، وهو 100 مهمة، في حالات نادرة. (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) - تمت إضافة قواعد أداة Lint لضمان تحديد
foregroundServiceType
فيAndroidManifest.xml
عند استخدامforegroundServiceType
فيForegroundInfo
. (aosp/1214207، b/147873061)
الإصدار 2.3.0
الإصدار 2.3.0
22 كانون الثاني (يناير) 2020
تم طرح androidx.work:work-*:2.3.0
بدون أي تغييرات منذ 2.3.0-rc01
. يحتوي الإصدار 2.3.0 على عمليات التنفيذ هذه.
تغييرات مهمة منذ الإصدار 2.2.0
- يمكنك الحصول على الدعم للعمل على المدى الطويل أو المهم من خلال
ListenableWorker#setForegroundAsync()
. - دعم مستوى تقدُّم العاملين عبر
ListenableWorker#setProgressAsync()
- يضم WorkManager الآن قواعد إضافية من Lint كجزء من المكتبة مما يساعد في اكتشاف الأخطاء مبكرًا.
الإصدار 2.3.0-rc01
8 كانون الثاني (يناير) 2020
تم طرح androidx.work:work-*:2.3.0-rc01
. يحتوي الإصدار 2.3.0-rc01 على هذه عمليات التنفيذ.
هذا الإصدار مماثل للإصدار 2.3.0-beta02
.
إصلاح الأخطاء
- تحدّد عناصر
work-testing
الآن اعتمادapi
علىwork-runtime-ktx
. (aosp/1194410)
الإصدار 2.3.0-beta02
18 كانون الأول (ديسمبر) 2019
تم طرح androidx.work:work-*:2.3.0-beta02
. يحتوي الإصدار 2.3.0-beta02 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة رسالة خطأ أفضل لاستثناءات SQLite غير القابلة للإصلاح. (aosp/1185777)
- تمت إضافة قاعدة Lint تضمن إزالة موفّر المحتوى
androidx.work.impl.WorkManagerInitializer
منAndroidManifest.xml
عند استخدام الإعداد عند الطلب. (aosp/1167007) - تمت إضافة تحذير أداة Lint عند استخدام
enqueue()
لعنوانPeriodicWorkRequest
بدلاً منenqueueUniquePeriodicWork()
. (aosp/1166032)
التغييرات في واجهة برمجة التطبيقات
- تتطلب منك الدالة
ForegroundInfo
الآن تحديدnotificationId
لاستخدامه عند استخدامListenableWorker.setForegroundAsync()
. يشكّل هذا التغيير تغييرًا جذريًا. ويتيح لك ذلك تشغيل عدةWorker
إطارات طويلة بشكل متوازٍ. يديرWorkManager
أيضًا فترة بقاءNotification
التي تم توفيرها بشكل أفضل. (b/145473554 وaosp/1181208 وasop/1181216 وasop/1183577)
إصلاح الأخطاء
- تم إصلاح خطأ في تنفيذ AlarmManager كان يؤدي إلى عدم تنظيف المنبّهات بشكل صحيح. (aosp/1156444)
- تم إصلاح الخطأ الذي يؤدي إلى إنشاء سلسلة
WorkContinuation
فارغة إذا كانت قائمة فارغة تتضمّنWorkRequest
. (b/142835274، aosp/1157051)
التغييرات في التبعية
- يستخدم WorkManager الآن الغرفة 2.2.2.
الإصدار 2.3.0-beta01
20 تشرين الثاني (نوفمبر) 2019
تم طرح androidx.work:work-*:2.3.0-beta01
. يحتوي الإصدار 2.3.0-beta01 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة قاعدة Lint جديدة تمنع أخطاء مطوّري البرامج بسبب التنفيذ الخاطئ لـ
androidx.work.Configuration.Provider
عند استخدام الإعداد عند الطلب. aosp/1164559
الإصدار 2.3.0-alpha03
23 تشرين الأول (أكتوبر) 2019
تم طرح androidx.work:work-*:2.3.0-alpha03
. يحتوي الإصدار 2.3.0-alpha03 على عمليات التنفيذ هذه.
الميزات الجديدة
- تمت إضافة واجهة برمجة التطبيقات
WorkManager.createCancelPendingIntent()
التي تسهّل إلغاءWorkRequest
بدون الحاجة إلى تسجيل مكوّن آخر فيAndroidManifest.xml
. تسهّل واجهة برمجة التطبيقات هذه إلغاءWorkRequest
منNotification
بشكل خاص. نتوقع إقران ذلك بواجهات برمجة التطبيقات الجديدة التي تعمل في المقدّمة في الإصدار 2.3.0. - يعتمد WorkManager الآن على الإصدار الثابت من
androidx.room:*:2.2.0
.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية
ForegroundInfo.getNotificationType()
إلىForegroundInfo.getForegroundServiceType()
لتصبح أكثر اتّساقًا مع واجهات برمجة التطبيقات الأساسية للمنصة. (b/142729893، aosp/1143316)
إصلاح الأخطاء
- تم إصلاح الخطأ الناجم عن طلب غير ضروري إلى
setTransactionSuccessful()
خارج نطاق المعاملة. يحدث ذلك في عمليات نقل البيانات النادرة. (b/142580433، aosp/1141737)
الإصدار 2.3.0-alpha02
9 تشرين الأول (أكتوبر) 2019
تم طرح androidx.work:work-*:2.3.0-alpha02
. يحتوي الإصدار 2.3.0-alpha02 على عمليات التنفيذ هذه.
الميزات الجديدة
- يدعم WorkManager الآن تشغيل عمل طويل المدى أو مهم يجب أن يبقى نشطًا من خلال نظام التشغيل. لمزيد من المعلومات، يُرجى الاطّلاع على
ListenableWorker#setForegroundAsync()
(أوCoroutineWorker#setForeground()
للغة Kotlin). (aosp/1133636)
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية واجهة برمجة التطبيقات
containsKey
فيData
لتصبحhasKeyWithValueOfType
. تمت أيضًا إعادة تسمية طريقة الإضافة المقابلة في مكتبةktx
. (b/141916545)
إصلاح الأخطاء
- تعمل جداول WorkManager بشكلٍ جيد عند بلوغ عدد
WorkRequest
المُدرجة في قائمة الانتظار حدود الجدولة. (aosp/1105766) - لا يستدعي WorkManager
ListenableWorker#onStopped()
إلا في حال عدم اكتمال العمل. (b/140055777) - يزيل WorkManager الآن معلومات التقدم عند مقاطعة عامل أو وصوله إلى حالته الطرفية. (aosp/1114572)
- أصبح لـ "
Data
" الآن تمثيلtoString()
أكثر فائدة. (b/140945323) - تتوفّر الآن طريقة
equals()
أفضل فيData
. ويمكن أيضًا استخدام السمةdeepEquals
مع أنواعArray
. (b/140922528) - يخزن WorkManager قاعدة البيانات الداخلية وملفات التفضيلات في دليل بدون نسخ احتياطي. (b/114808216)
الإصدار 2.3.0-alpha01
22 آب (أغسطس) 2019
تم طرح androidx.work:work-*:2.3.September 5, 20190-alpha01
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- بإمكان "
ListenableWorker
" الآن تحديد مستوى التقدّم من خلال واجهة برمجة تطبيقاتsetProgressAsync()
. تمت أيضًا إضافة واجهة برمجة تطبيقاتsetProgress
متوافقة معsuspend
فيCoroutineWorker
وsetProgress
فيRxWorker
تعرضSingle<Void>
. من خلال واجهات برمجة التطبيقات الجديدة هذه، يستطيع عاملو واجهات برمجة التطبيقات الجدد نقل معلومات مستوى التقدّم من خلالWorkInfo
الذي يحتوي علىgetProgress
واجهة برمجة تطبيقات متوافقة. (b/79481554) - تتضمن الدالة
Data
واجهة برمجة تطبيقاتcontainsKey()
يمكن استخدامها للتحقّق من أنّ بيانات الإدخال فيWorker
تحتوي على مفاتيح من النوع المتوقّع. (b/117136838) - يمكن الآن إنشاء مسلسل
Data
باستخدامData.toByteArray()
وData.fromByteArray()
. يُرجى العلم أنّه ما مِن ضمانات بشأن تحديد الإصدارات باستخدامData
، لذا يجب عدم الاحتفاظ بها أو استخدامها مع IPC بين التطبيقات. وهي آمنة فقط للاستخدام بين عمليات متعددة للتطبيق نفسه. - تمت إضافة إمكانية تحديد
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
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تمت إزالة الاعتمادية غير المقصودة التي تم إجراؤها في
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)
الإصدار
الإصدار
11 تموز (يوليو) 2019
تم طرح androidx.work:work-*:2.1.0
. هذا الإصدار مماثل للإصدار androidx.work:work-*:2.1.0-rc01
.
تغييرات مهمة منذ الإصدار 2.0.1
- يتطلّب
work-runtime-ktx
الآن Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلىbuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- تمت إضافة الإعداد عند الطلب لـ WorkManager، والذي سيؤدي إلى إنشاء WorkManager
عند الرجوع إليها فقط. b/127497100 لإعداد مشروعك للتهيئة عند الطلب:
- إيقاف أداة الإعداد التلقائية
- تنفيذ
Configuration.Provider
على عنصرApplication
المخصّص. - تغيير كل المراجع لـ
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
وفي إطار هذا التغيير، أجرينا تم إيقافها نهائيًاWorkManager.getInstance()
. من الآمن دائمًا الاتصال بجديد استبدال "WorkManager.getInstance(Context)
" حتى في حال عدم إجراء ذلك التهيئة عند الطلب.
- تتوافق
PeriodicWorkRequest
الآن مع حالات التأخير الأولية. يمكنك استخدام صفحة طريقةsetInitialDelay
علىPeriodicWorkRequest.Builder
لضبط إدخال أولي تأخير. b/111404867 - تمت إضافة إمكانية التفويض إلى
WorkerFactory
مسجَّل واحد أو أكثر باستخدامDelegatingWorkerFactory
b/131435993 - تمت إضافة إمكانية تخصيص
Executor
الذي يستخدمه WorkManager. كل عمليات مسك الدفاتر الداخلية عبرConfiguration.Builder.setTaskExecutor
. - تمت إضافة إمكانية إنشاء وحدة
Worker
وListenableWorker
قابلة للاختبار. باستخدامTestWorkerBuilder
وTestListenableWorkerBuilder
في عنصر واحد (work-testing
)- لاحظ أن
work-testing
يقوم الآن بسحب Kotlin كتبعية تتضمن العديد من إضافات Kotlin افتراضيًا.
- لاحظ أن
- تمت إضافة عدد محاولات التنفيذ إلى
WorkInfo
. b/127290461 - يمكن لأنواع
Data
الآن تخزين واسترداد وحدات البايت وصفائف البايت. هذا لا تغيير الحد الأقصى لحجمData
عنصر - يعتمد WorkManager الآن على
Room 2.1.0
، والذي من المفترض أن يؤدي إلى إصلاح بعض المشاكل في قاعدة البيانات.
الإصدار 2.1.0-rc01
27 حزيران (يونيو) 2019
تم طرح androidx.work:work-*:2.1.0-rc01
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يتسبب في تعطُّل التطبيق عند تنفيذ المهام باستخدام
JobScheduler
عندما تكون هناك نسخة احتياطية قيد التقدم b/135858602.
الإصدار 2.1.0-beta02
20 حزيران (يونيو) 2019
تم طرح androidx.work:work-*:2.1.0-beta02
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يستخدم
TestListenableWorkerBuilder
الآنWorkerFactory
الصحيح عند إنشاء مثيلات منListenableWorker
. b/135275844 - تم إصلاح خطأ تسبّب في حدوث تغييرات في فترات تنفيذ
WorkRequest
بسبب وفاة العملية. b/135272196
الإصدار 2.1.0-beta01
13 حزيران (يونيو) 2019
تم طرح androidx.work:work-*:2.1.0-beta01
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يعتمد WorkManager الآن على
Room 2.1.0
، والذي من المفترض أن يؤدي إلى إصلاح بعض المشاكل في قاعدة البيانات. - تمت إزالة بعض وحدات الإدخال/الإخراج لقرص بدء التشغيل في سلسلة التعليمات الرئيسية.
- تم إصلاح التوقف المؤقت المحتمل في تتبع القيود. b/134361006
- تم بشكل استباقي إلغاء المهام غير الصالحة التي يكون مصدرها WorkManager. b/134058261
- تمت إضافة بعض الاتصالات الدفاعية إلى واجهات برمجة تطبيقات Job Scheduler للأجهزة التي تعمل بشكل غير صحيح.
الإصدار 2.1.0-alpha03
5 حزيران (يونيو) 2019
تم طرح androidx.work:*:2.1.0-alpha03
.
إصلاح الأخطاء
- مستندات محسّنة عن
PeriodicWorkRequest
- يستخدم
WorkManagerTestInitHelper
الآن أداة تنفيذ الخلفية المناسبة للاختبارات. - إصلاح مشكلات SQLite عند التعامل مع المعاملات الكبيرة على بعض الأجهزة. (b/130182503)
- أصبحت تبعيات WorkManager أكثر دقة الآن. (b/133169148).
- حلّ أخطاء خاصة بالمصنّع الأصلي للجهاز عند تنفيذ
JobScheduler
عند جدولة المهام باستخدام WorkManager. - تحسينات في أداة الجدولة المستندة إلى AlarmManager بشأن فترات الخدمة الدائمة التي حدثت سابقًا والتي تسببت في حدوث أعطال نادرة (b/133313734)
الإصدار 2.1.0-alpha02
16 أيار (مايو) 2019
تم إصدار WorkManager 2.1.0-alpha02. يحتوي هذا الإصدار على عدة واجهات برمجة تطبيقات جديدة.
التغييرات في واجهة برمجة التطبيقات
تتوافق
PeriodicWorkRequest
الآن مع حالات التأخير الأولية. يمكنك استخدام صفحة طريقةsetInitialDelay
علىPeriodicWorkRequest.Builder
لضبط إدخال أولي تأخير. b/111404867تمت إضافة إمكانية التفويض إلى
WorkerFactory
مسجَّل واحد أو أكثر باستخدامDelegatingWorkerFactory
b/131435993تمت إضافة إمكانية تخصيص
Executor
الذي يستخدمه WorkManager. كل عمليات مسك الدفاتر الداخلية عبرConfiguration.Builder.setTaskExecutor
.مستندات محسَّنة حول
WorkRequest.keepResultsForAtLeast
(b/130638001)، التهيئة عند الطلب وPeriodicWorkRequest.Builder
(b/131711394).
الإصدار 2.1.0-alpha01
24 نيسان (أبريل) 2019
تم إصدار WorkManager 2.1.0-alpha01. يحتوي هذا الإصدار على عدة واجهات برمجة تطبيقات جديدة. يرجى ملاحظة أنه بدءًا من هذا الإصدار، ستكون هناك ميزات جديدة إلى إصدار 1.x. ننصحك بالتبديل إلى 2.x.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة الإعداد عند الطلب لـ WorkManager، والذي سيؤدي إلى إنشاء WorkManager
عند الرجوع إليها فقط. b/127497100 لإعداد مشروعك للتهيئة عند الطلب:
- إيقاف أداة الإعداد التلقائية
- تنفيذ
Configuration.Provider
على عنصرApplication
المخصّص. - تغيير كل المراجع لـ
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
وفي إطار هذا التغيير، أجرينا تم إيقافها نهائيًاWorkManager.getInstance()
. من الآمن دائمًا الاتصال بجديد استبدال "WorkManager.getInstance(Context)
" حتى في حال عدم إجراء ذلك التهيئة عند الطلب.
- تمت إضافة إمكانية إنشاء وحدة
Worker
وListenableWorker
قابلة للاختبار. باستخدامTestWorkerBuilder
وTestListenableWorkerBuilder
في عنصر واحد (work-testing
)- يُرجى العِلم أنّ
work-testing
يسحب الآن Kotlin كاعتمادية، لكنّه أيضًا تتضمن العديد من إضافات Kotlin افتراضيًا.
- يُرجى العِلم أنّ
- تمت إضافة عدد محاولات التنفيذ إلى
WorkInfo
. b/127290461 - يمكن لأنواع
Data
الآن تخزين واسترداد وحدات البايت وصفائف البايت. هذا لا تغيير الحد الأقصى لحجمData
عنصر - تم إيقاف العمل بها في
CoroutineWorker.coroutineContext
. كان هذا الحقل غير صحيح تمت كتابتها على أنهاCoroutineDispatcher
؛ فلن تحتاج إليها بعد الآن حيث يمكنك الانتقال إلى ما هو coroutineContext المطلوب بنفسك في نص دالة التعليق. RxWorker.createWork()
وRxWorker.getBackgroundScheduler()
الآن التعليق التوضيحي باستخدام@NonNull
من أنواع الإرجاع.
الإصدار 2.0.1
الإصدار 2.0.1
9 نيسان (أبريل) 2019
تم إصدار WorkManager 2.0.1. يتطابق هذا الإصدار مع 2.0.1-rc01.
الإصدار 2.0.1-rc01
3 نيسان (أبريل) 2019
تم إصدار WorkManager 2.0.1-rc01. يحتوي هذا الإصدار على بعض إصلاحات الأخطاء. بالنسبة بالنسبة إلى مستخدمي الإصدار 1.x القديم، تظهر بعض هذه التغييرات أيضًا في 1.0.1-rc01.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكل صحيح باستخدام WorkManager. b/122553577
- تم إصلاح تعطُّل الحالة الهامشية مع عدم حذف تتبُّع القيود في واجهات برمجة تطبيقات pre-Jobscheduler. b/129226383
- تم إصلاح مشكلة "
StackOverflowError
" في التعامل مع سلاسل العمل الطويلة. b/129091233 - تم تعديل المستندات الخاصة بـ
PeriodicWorkRequest
للإشارة إلى أنّ وقت المرونة هو غير متاح على واجهة برمجة التطبيقات 23. - تم إصلاح بعض الروابط غير الصالحة في مستندات Kotlin.
الإصدار 2.0.0
الإصدار 2.0.0
20 آذار (مارس) 2019
تم إصدار WorkManager 2.0.0. هذا الإصدار مماثل للإصدار 2.0.0-rc01 وملحق إصدار 1.0.0 الثابت من AndroidX مع تبعيات AndroidX. ننصحك بما يلي: يستهدف هذا الإصدار بدلاً من الإصدارات القديمة 1.x. جميع المجموعات الإعلانية النشطة سيستهدف التطوير الإصدار 2.x و 1.x فقط إلى إصلاحات للأخطاء البالغة الأهمية لفترة محدودة.
الإصدار 2.0.0-rc01
7 آذار (مارس) 2019
تم إصدار WorkManager 2.0.0-rc01. هذا الإصدار مماثل للإصدار الثابت 1.0.0. ولكنها تعتمد على AndroidX. وبمجرد أن يصل هذا إلى 2.0.0 مستقر، يجب عليك تضمين هذا الإصدار، كما أن الإصدارات القديمة 1.x لن تتلقى إلا بعض البيانات المهمة وإصلاح الأخطاء. تستهدف جميع عمليات التطوير النشطة 2.x.
تبعيات ما قبل AndroidX
المستندات المرجعية: Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
الإصدار 1.0.1
الإصدار 1.0.1
9 نيسان (أبريل) 2019
تم إصدار WorkManager 1.0.1. يتطابق هذا الإصدار مع 1.0.1-rc01.
يُرجى ملاحظة أنّنا نشجِّع المستخدمين بشدة على التحديث إلى الإصدار 2.x من WorkManager، باعتباره سيكون هناك عدد قليل جدًا من التحديثات على فرع 1.x من الآن فصاعدًا. ستشمل واجهات برمجة التطبيقات الجديدة لن يتم إصداره أيضًا للمكتبة 1.x.
الإصدار 1.0.1-rc01
2 نيسان (أبريل) 2019
تم إصدار WorkManager 1.0.1-rc01. يحتوي هذا الإصدار على بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تعمل اختبارات Robolectric الآن بشكل صحيح باستخدام WorkManager. b/122553577
- تم إصلاح تعطُّل الحالة الهامشية مع عدم حذف تتبُّع القيود في واجهات برمجة تطبيقات pre-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
" بشكل صحيح على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
- تم إصلاح الحالة التي تتسبب في تسرب WorkManagers Wakelocks عند استخدام عملية تنفيذ مستندة إلى AlarmManager
الإصدار 1.0.0-beta03
25 كانون الثاني (يناير) 2019
يحتوي هذا الإصدار على بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- أدخلنا الانحدار
1.0.0-beta02
الذي تسبّب في عدم تنفيذ العمل. بشكل صحيح في بعض المواقف. b/123211993 - تم إصلاح الحالة التي لم يحترم فيها العمل توقيت التراجع بشكل صحيح. b/122881597
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (واجهة برمجة التطبيقات). أو) أو أقل. هذه استمرارية لعملية الإصلاح في1.0.0-beta02
. b/121345393 - تمت إضافة
exported=false
لبعض المكوّنات غير المتوفّرة في البيان. هذا التعليق التوضيحي. - تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في وثائق على مستوى الحزمة.
الإصدار 1.0.0-beta02
15 كانون الثاني (يناير) 2019
يحتوي هذا الإصدار على بعض إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح الحالة الهامشية حيث يمكن تشغيل العمل الدوري أكثر من مرة لكل فاصل على الأجهزة التي تعمل بنظام التشغيل Android 6.0 (المستوى 23 لواجهة برمجة التطبيقات). b/121998363
- تم إصلاح
ConcurrentModificationException
على الأجهزة التي تعمل بنظام التشغيل 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
يتضمّن هذا الإصدار بعض التغييرات غير الناجحة في واجهة برمجة التطبيقات. يُرجى الاطّلاع على القسم Breaking API Changes (التغييرات في واجهة برمجة التطبيقات) أدناه. من المرجّح أن يتمّ طرح هذا الإصدار كأول إصدار تجريبي. يتضمّن alpha12
أيضًا تعديلات شاملة على المستندات.
التغييرات في واجهة برمجة التطبيقات
- يقدّم عنصر جديد، اسمه "
work-rxjava2
"، ميزة "RxWorker
". هذهListenableWorker
من المتوقّع أن تكون فيSingle<Payload>
. - تمّت إزالة دعم JobDispatcher من Firebase بسبب اقتراب موعد إيقافه. ويعني هذا أنّه لن يتم تحديث عنصر "
work-firebase
" مع بدء الإصدار التجريبي. ونحن نسعى إلى إضافة بديل في المستقبل. - سيتم تجميع
Payload
إلىResult
. تم تغيير دورResult
إلى "فئة مختومة". من خلال ثلاثة طرق تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. نتيجةListenableFuture
هيResult
بدلاً منPayload
. لا تحتويWorker
على طريقتَي getter وsetter للمخرجاتData
. يشكّل هذا التغيير تغييرًا جذريًا. - تمت إضافة السمتَين
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
والصيغ المختلفة لتوفير معرّفات الموارد المنتظمة (URI) للمحتوى البطيء الذي يتم تشغيله بشكل أفضل. b/119919774 - تمت إضافة صيغة واحدة (
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
). تتطلّب هذه الطريقة واجهة برمجة التطبيقات 26. - تمت إضافة طريقتَي الإضافة
Operation.await()
وListenableFuture.await()
بلغة Kotlin. - تمت إعادة تسمية "
Operation.getException()
" إلى "Operation.getThrowable()
". يشكّل هذا التغيير تغييرًا جذريًا. - إنّ الفئة
ContentUriTriggers
والطرق التي تشير إليها لم تعُد متاحة للاستخدام العام. يشكّل هذا التغيير تغييرًا جذريًا. - تمت إزالة بقية طرق التباين في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإصدار، يمكنك دمج الاختلافات الحالية باستخدامArrays.asList(...)
. لا نزال ندرج إصدارات وسيطة واحدة لكل طريقة. يشكّل هذا التغيير تغييرًا جذريًا. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
صيغة. كانوا يقدمون واجهة برمجة تطبيقات مربكة، طرقcombine
الحالية أكثر وضوحًا. يشكّل هذا التغيير تغييرًا جذريًا.
إصلاح الأخطاء
- أصبحت عمليات التنفيذ في مرحلة ما قبل Marshmallow أكثر موثوقية في التعافي من وفاة مهمة قيد التنفيذ.
- يتم تتبُّع
LiveData
الذي تتم ملاحظته من خلالobserveForever
من خلال WorkManager. هذه نسخة خلفية لإصلاح مكتبة الغرفة. b/74477406 - يطرح
Data.Builder.build()
الآن استثناءً إذا تجاوز الكائن المتسلسل الحد الأقصى للحجم. لم يكن هذا الأمر يحدث إلا في سلسلة محادثات في الخلفية لم يكن بإمكانك التعامل معها بشكل صحيح. - مزيد من العمل المميّز بين العمل المتوقّف مقابل العمل المُلغى ستعرض
getWorkInfoById()
WorkInfo
معCANCELLED
State
خلالListenableWorker.onStopped()
. - يتم التعامل مع
null
Result
على أنّها إخفاقات فيListenableWorker
. b/120362353 - إصلاح نظري لأجهزة Shield اللوحية التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات، والتي أدّت أحيانًا إلى ظهور خطأ
IllegalArgumentException
b/119484416
كسر التغييرات في واجهة برمجة التطبيقات
- تمّت إزالة دعم JobDispatcher من Firebase بسبب اقتراب موعد إيقافه. ويعني هذا أنّه لن يتم تحديث عنصر "
work-firebase
" مع بدء الإصدار التجريبي. ونحن نسعى إلى إضافة بديل في المستقبل. - سيتم تجميع
Payload
إلىResult
. تم تغيير دورResult
إلى "فئة مختومة". من خلال ثلاثة طرق تنفيذ ملموسة، يمكنك الحصول عليها من خلالResult.success()
(أوResult.success(Data)
) وResult.failure()
(أوResult.failure(Data)
) وResult.retry()
. نتيجةListenableFuture
هيResult
بدلاً منPayload
. لا تحتويWorker
على طريقتَي getter وsetter للمخرجاتData
. - تمت إضافة طريقتَي الإضافة
Operation.await()
وListenableFuture.await()
بلغة Kotlin. - تمت إعادة تسمية "
Operation.getException()
" إلى "Operation.getThrowable()
". - إنّ الفئة
ContentUriTriggers
والطرق التي تشير إليها لم تعُد متاحة للاستخدام العام. - تمت إزالة بقية طرق التباين في
WorkManager
وWorkContinuation
وOneTimeWorkRequest
لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإصدار، يمكنك دمج الاختلافات الحالية باستخدامArrays.asList(...)
. لا نزال ندرج إصدارات وسيطة واحدة لكل طريقة. - تمت إزالة
WorkContinuation.combine(OneTimeWorkRequest, *)
صيغة. كانوا يقدمون واجهة برمجة تطبيقات مربكة، طرقcombine
الحالية أكثر وضوحًا.
الإصدار 1.0.0-alpha11
8 تشرين الثاني (نوفمبر) 2018
يتضمّن هذا الإصدار العديد من التغييرات التي ستصبح واجهة برمجة تطبيقات مستقرة في beta
.
هناك تغييرات قد تؤدي إلى عطل في واجهة برمجة التطبيقات في هذا الإصدار. يُرجى الاطّلاع على القسم Breaking API Changes (التغييرات في واجهة برمجة التطبيقات) أدناه.
التغييرات في واجهة برمجة التطبيقات
- يقدّم تطبيق "
work-runtime-ktx
"CoroutineWorker
جديدًا. - تمت إعادة تسمية "
WorkStatus
" إلى "WorkInfo
". تمت إعادة تسمية جميع صيغ طريقةgetStatus
المقابلة إلى صيغgetWorkInfo
المقابلة يشكّل هذا التغيير تغييرًا جذريًا. - لم يعد يقبل
ListenableWorker.onStopped()
وسيطة منطقية تمثل ما إذا تم إلغاءWorkRequest
. لم يعُدWorkManager
يحقق هذا التمييز. يشكّل هذا التغيير تغييرًا جذريًا. - تمت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. يشكّل هذا التغيير تغييرًا جذريًا. - لم تعُد أدوات الضبط على
Constraints
جزءًا من واجهة برمجة التطبيقات العامة. يشكّل هذا التغيير تغييرًا جذريًا. - سبق أن عرضت
WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفائف. تعرض هذه الطرق الآن "المجموعات". يشكّل هذا التغيير تغييرًا جذريًا. - تمت إعادة تسمية "
ListenableWorker.onStartWork()
" إلى "ListenableWorker.startWork()
". يشكّل هذا التغيير تغييرًا جذريًا. - لم تعُد دالة إنشاء
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. يشكّل هذا التغيير تغييرًا جذريًا. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. يشكّل هذا التغيير تغييرًا جذريًا. - تمت إضافة الكثير من تعليقات
@NonNull
التوضيحية إلى واجهة برمجة التطبيقات العامة من أجل تحسين تصاميم الواجهة. - أضِف
WorkManager.enqueueUniqueWork()
API لإدراجOneTimeWorkRequest
فريدة في قائمة المحتوى التالي بدون الحاجة إلى إنشاءWorkContinuation
. - تعرض الآن جميع صيغ
enqueue
وcancel
فيWorkManager
نوعOperation
جديدًا. يشكّل هذا التغيير تغييرًا جذريًا. - لم تعد جميع صيغ
enqueue
تقبل الفروقات لـWorkRequest
. يشكّل هذا التغيير تغييرًا جذريًا. يمكنك استخدام "المجموعات" بدلاً من ذلك. يمكنك استخدامArrays.asList()
لتعديل الرمز الحالي. وقد نفّذنا هذا الإجراء لتقليل عدد مساحات عرض واجهة برمجة التطبيقات وعدد الطرق. - ستؤدي محاولة إجراء
initialize
WorkManager
أكثر من مرة واحدة لكل عملية إلى الحصول علىIllegalStateException
. يشكّل هذا التغيير تغييرًا جذريًا.
إصلاح الأخطاء
- إنّ عناصر
WorkRequest.Builder
في العناصرwork-runtime-ktx
تستخدم الآنListenableWorker
. إصلاحات b/117666259 - تأكَّد من أنّ وقت تشغيل تطبيق
PeriodicWork
في المستقبل. إصلاحات b/118204399 - إزالة وحدات الإدخال والإخراج المُحتمَلة للقرص عند استخدام WorkManager عند بدء تشغيل التطبيق إصلاحات b/117796731
- أصلِح شرط السباق في
WorkConstraintsTracker
. إصلاح android-workmanager/issues/56
كسر التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية "
WorkStatus
" إلى "WorkInfo
". تمت إعادة تسمية جميع صيغ طريقةgetStatus
المقابلة إلى صيغgetWorkInfo
المقابلة - لم يعد يقبل
ListenableWorker.onStopped()
وسيطة منطقية تمثل ما إذا تم إلغاءWorkRequest
. لم يعُدWorkManager
يحقق هذا التمييز. - تمت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. - لم تعُد أدوات الضبط على
Constraints
جزءًا من واجهة برمجة التطبيقات العامة. - سبق أن عرضت
WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفائف. تعرض هذه الطرق الآن "المجموعات". - تمت إعادة تسمية "
ListenableWorker.onStartWork()
" إلى "ListenableWorker.startWork()
". - لم تعُد دالة إنشاء
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. - تعرض الآن جميع صيغ الطريقتَين
enqueue
وcancel
فيWorkManager
نوعOperation
جديدًا. - لم تعد جميع صيغ
enqueue
تقبل الفروقات لـWorkRequest
. - ستؤدي محاولة إجراء
initialize
WorkManager
أكثر من مرة واحدة لكل عملية إلى الحصول علىIllegalStateException
.
الإصدار 1.0.0-alpha10
11 تشرين الأول (أكتوبر) 2018
يتيح هذا الإصدار العمل غير المتزامن الذي يتحكّم فيه المطوّر. هناك تغييرات قد تؤدي إلى عطل في واجهة برمجة التطبيقات في هذا الإصدار. يُرجى الاطّلاع على القسم Breaking API Changes (التغييرات في واجهة برمجة التطبيقات) أدناه.
نتوقع أن يدخل WorkManager المراحل النهائية من فترة الإصدار الأولي. نتوقع أن تكون واجهة برمجة التطبيقات مستقرة ضمن الإصدار التجريبي، لذا يُرجى تخصيص بعض الوقت لإرسال ملاحظاتك بشأن أداة تتبُّع المشاكل.
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة جميع طُرق وفئات
deprecated
السابقة، لا سيما طريقة الإنشاء التلقائيةWorker
. هذا التغيير غير مكتمل في واجهة برمجة التطبيقات. - تمت إعادة تسمية "
NonBlockingWorker
" إلى "ListenableWorker
"، وأصبح الآن صفًا علنيًا تم إظهاره وجاهز للاستخدام.- توفّر الدالة
ListenableWorker
إمكانية الوصول إلى طريقة مجردة واحدة، وهيListenableFuture<Payload> onStartWork()
، يتم استدعاؤها في سلسلة التعليمات الرئيسية. الأمر متروك لك لبدء العمل ومعالجته بشكل غير متزامن. عند الانتهاء، يجب تعديل "ListenableFuture
" بشكلٍ مناسب. تتوفر عمليات التنفيذ المرجعية لـListenableFuture
في حزمةFutures
باللغةalpha02
(انظر أدناه القسمWorkManager
). - توسِّع
Worker
نطاقListenableWorker
وتظل تعمل على النحو السابق، بطريقةResult doWork()
مجرّدة. - تم ترتيب بعض الطرق والأعضاء من "
Worker
" إلى "ListenableWorker
" عشوائيًا. - سنوفر قريبًا عمليات تنفيذ مرجعية لأجهزة
ListenableWorker
التي تستخدم الكوروتينات في Kotlin (بمجرد طرح الإصدارات الثابتة) وRxJava2.
- توفّر الدالة
- تم دمج الواجهة
WorkerFactory
والتنفيذ الملموسDefaultWorkerFactory
في فئة مجردة تُسمىWorkerFactory
. ويضمن التنفيذ أن يتم استدعاء السلوك التلقائي المستند إلى الانعكاس باعتباره محاولة أخيرة لأي مثيلاتWorkerFactory
من إنشاء المستخدم. يشكّل هذا التغيير تغييرًا جذريًا. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
وجميع الطرق ذات الصلة. تمت إضافةListenableFuture<Void>
كنوع إرجاع بعدة طرق في واجهة برمجة التطبيقات. هذا التغيير غير مكتمل في واجهة برمجة التطبيقات.- يمكنك الآن الحصول والمراقبة بشكلٍ متزامن باستخدام
ListenableFuture
. على سبيل المثال، يتم استخدامWorkManager.enqueue()
لعرضvoid
؛ فإنها تُرجع الآنListenableFuture<Void>
. يمكنك طلبListenableFuture.addListener(Runnable, Executor)
أوListenableFuture.get()
لتنفيذ الرمز بعد اكتمال العملية. - يُرجى العِلم أنّ
ListenableFuture
هذه لا توضِّح ما إذا نجحت العملية أو لم تنجح. فقط أنه انتهوا. سيظل عليك ربط طرق WorkManager لمعرفة هذه المعلومات. - ونتجاهل طلبات
cancel()
الموجَّهة إلى هذه العناصر، لأنها مربكة ويصعب استفهامها (هل سيتم إلغاء العملية أم العمل الناتج عنها؟). وهذا في إطار عقد "Future
". - للحفاظ على التكافؤ مع طرق
getStatus*
المتزامنة، قدّمناListenableFuture
صيغ، وأعدنا تسمية الخيارات الحالية التي عرضتLiveData
لتصبح LiveData بشكل صريح. كجزء من الاسم (على سبيل المثال،getStatusesByIdLiveData(UUID)
). يحدث هذا التغيير بسبب خلل في واجهة برمجة التطبيقات.
- يمكنك الآن الحصول والمراقبة بشكلٍ متزامن باستخدام
إصلاح الأخطاء
- تم إصلاح المشكلة المعروفة في alpha09 المتعلّقة بملفات
androidx-annotations.pro
المكرّرة. يمكنك إزالة الحل البديل من ملاحظات الإصدار السابق من خلال حذفexclude 'META-INF/proguard/androidx-annotations.pro'
من ملف Gradle. - تمت إضافة إعدادات Proguard للاحتفاظ بدالة إنشاء
Worker
الجديدة. b/116296569 - إصلاح
NullPointerException
المحتمَلة في حالة السباق التي تم فيها بدء العمل بـREPLACE
يوم b/116253486 وb/116677275 - يقبل
WorkContinuation.combine()
الآنWorkContinuation
واحدة أو أكثر بدلاً من اثنين أو أكثر. b/117266752
كسر التغييرات في واجهة برمجة التطبيقات
- تمت إزالة جميع طُرق وفئات
deprecated
السابقة، لا سيما طريقة الإنشاء التلقائيةWorker
. - تم دمج الواجهة
WorkerFactory
والتنفيذ الملموسDefaultWorkerFactory
في فئة مجردة تُسمىWorkerFactory
. - تمّت إزالة "
WorkManager.synchronous()
" و"WorkContinuation.synchronous()
". - تعرض
WorkManager.getStatus*()
طريقة الآنListenableFuture
.WorkManager.getStatus*LiveData()
إرجاعLiveData
الإصدار 1.0.0-alpha09
19 أيلول (سبتمبر) 2018
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف واحد باستخدام المسار المستقل لنظام التشغيل 'meta-INF/proguard/androidx-annotations.pro'"، يُرجى وضع ما يلي في ملف Gradle كحل بديل مؤقت أثناء حلّ المشكلة في الإصدار alpha10:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة إصلاح آخر كان مطلوبًا في "100 وظيفة". خطأ. b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب شروط السباق. b/114705286
- تم تفويض طلبات "
ConstraintTrackingWorker.onStopped(boolean)
" إلى جهاز "Worker
" الأساسي. b/114125093 - فرض الحد الأدنى الصحيح لتأخيرات التراجع على Firebase JobDispatcher b/113304626
- تضمن سلاسل المحادثات المحسَّنة للمستخدمين الداخليين في المكتبة.
- تصحيح مشكلة محتملة تتعلق بإزالة تكرار
LiveData
داخليًا.
التغييرات في واجهة برمجة التطبيقات
- يمكنك الآن إنشاء مثيلات خاصة بك من
Worker
في وقت التشغيل من خلال تحديدWorkerFactory
كجزء منWorkManager.Configuration
. المصنع الاحتياطي هو "DefaultWorkerFactory
"، والذي يطابق سلوك الإصدارات السابقة من WorkManager.- تم وضع علامة على التركيبات التلقائية لـ
Worker
وNonBlockingWorker
على أنّها متوقّفة نهائيًا. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)
) واستدعاءsuper(Context, WorkerParameters)
؛ ستزيل الإصدارات المستقبلية من WorkManager الدالة الإنشائية الافتراضية.
- تم وضع علامة على التركيبات التلقائية لـ
- لقد بدأنا في استخدام أداة
ListenableFuture
الجديدة داخليًا (بدون اعتماديات Java). سنضيف 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
التغييرات في واجهة برمجة التطبيقات
- تم تمديد صف جديد، وهو "
NonBlockingWorker
"، من قِبل "Worker
". ولن يؤثر ذلك في أي استخدام حالي. في المستقبل، سيصبح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
. This is a قد يؤدي إلى كسر في واجهة برمجة التطبيقات. - تمت إضافة واجهة برمجة تطبيقات جديدة، وهي
Configuration.Builder.setMinimumLoggingLevel(int)
، التي يمكنها التحكّم في مستوى الإسهاب في WorkManager. يُسجِّل WorkManagerLog.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
- تسجيل الاستثناءات غير المرصودة التي تحدث أثناء تنفيذ العامل. b/109900862
- تم السماح بعمليات نقل بيانات قاعدة البيانات المدمِّرة في حال قرّرت العودة إلى إصدار قديم من WorkManager. b/74633270
- تم إصلاح تعطُّل نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا حدثت فقط في حال استخدام تنسيق العلامة الضمنية نفسه بنفسك.
الإصدار 1.0.0-alpha03
19 حزيران (يونيو) 2018
إصلاح الأخطاء
تم إصلاح شرط سباق في التنفيذ المستند إلى
AlarmManager
. b/80346526.تم إصلاح المهام المكرّرة عند استخدام
JobScheduler
بعد إعادة تشغيل الجهاز.تظل المهام التي تتضمن مشغلات معرف الموارد المنتظم (URI) للمحتوى موجودة الآن عبر عمليات إعادة التشغيل. b/80234744
تم إجراء تعديلات على المستندات. b/109827628 وb/109758949 وb/80230748
تم إصلاح عطل أثناء إعادة إدراج
WorkRequest
في قائمة الانتظار. b/109572353.تم إصلاح تحذيرات برنامج Kotlin البرمجي عند استخدام تبعية
work-runtime-ktx
.يستخدم WorkManager الآن الإصدار
1.1.1-rc1
منRoom
.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
getStatusesSync()
، وهو الإصدار المتزامن منWorkContinuation.getStatuses()
. - بإمكان "
Worker
" التمييز بين الإلغاء الذي يبدأه المستخدم والإيقاف المؤقت الذي طلبه نظام التشغيل. تعرض "Worker.isStopped()
" مبلغtrue
إذا تم طلب أي نوع من أنواع التوقّف. تعرض ميزة "Worker.isCancelled()
" القيمة "true
" إذا تم إلغاء العمل بشكل صريح. b/79632247 - إضافة دعم Jobparams#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
.