مدير العمل
التعديل الأخير | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | إصدار ألفا |
---|---|---|---|---|
17 نيسان (أبريل) 2024 | 2.9.0 | - | - | 2.10.0-alpha02 |
إعلان التبعيات
لإضافة تبعية إلى WorkManager، يجب إضافة مستودع Google Maven إلى مشروعك:
أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle
لتطبيقك أو الوحدة الخاصة بك:
رائع
dependencies { def work_version = "2.9.0" // (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.0" // (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-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.0
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
من خلال الإعدادات واستخدامها لتنفيذ تسلسل اختبارات 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
الآن حدًا منفصلاً للعاملين في معرّف المحتوى (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) - اسمح بضبط الساعة من خلال عملية الضبط، وأن يتم استخدامها لتشغيل تسلسل تنفيذ اختبارات Worker. (Ic586e)
- تمت إضافة طريقة
getStopReason()
إلىListenableWorker
لتوضيح سبب إيقاف العامل. (I07060) - تمت إضافة
WorkManagerTestInitHelper#closeWorkDatabase()
لتجنُّب تحذير CloseGuard عن الموارد التي تم تسريبها. (Ia8d49)
إصلاح الأخطاء
- تمت إضافة إمكانية تجاوز
overrideNextScheduleTime
باستخدامTestDriver
وحلّ المشاكل المتعلقة بقابلية الاختبار. (Ic2905)
الإصدار 2.9.0-alpha01
7 حزيران (يونيو) 2023
تم طرح "androidx.work:work-*:2.9.0-alpha01
". يحتوي الإصدار 2.9.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
- إمكانية المشاهدة من خلال
Flow
ثانية وبدلاً منLiveData
، يمكن الآن ملاحظة مستوى تقدم العامل من خلال التدفقات عبرWorkManager.getWorkInfosFlow
وطرق مشابهة. - جدولة دقيقة للعمال الدوريين عبر
setNextScheduleTimeOverride
. ويتيح ذلك الحساب الديناميكي لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات إعادة التحميل التكيُّفية أو السلوك المخصّص لإعادة المحاولة أو تشغيل عامل خلاصة أخبار قبل أن يستيقظ المستخدم كل صباح بدون أي إرهاق. يجب استخدامExistingPeriodicWorkPolicy.UPDATE
مع هذه الأساليب لتجنُّب إلغاء عامل قيد التشغيل حاليًا أثناء جدولة العمل التالي. - اختبار "
WorkManager
" مع مرحلة إنتاج سلاسل المحادثات المتطابقة يمكن استخدامExecutorsMode.PRESERVE_EXECUTORS
للاحتفاظ بالتنفيذات التي تم ضبطها فيConfiguration
واستخدام سلسلة التعليمات الرئيسية الحقيقية. - تم نقل واجهات برمجة تطبيقات "الكوروتين"، مثل "
CoroutineWorker
"، من العنصر الإضافي "work-runtime-ktx
" إلى العنصر الرئيسي "work-runtime
".work-runtime-ktx
فارغ الآن.
تغييرات واجهة برمجة التطبيقات
- أصبحت دالة إنشاء
WorkInfo
متاحة للجميع الآن، ويمكن الاستفادة من ذلك في الاختبار. (Ia00b6، b/209145335) work-runtime-ktx
فارغ الآن، وتتوفر الآنCoroutineWorker
وأدوات مساعدة أخرى خاصة بلغة kotlin في العنصرwork-runtime
الرئيسي. (I71a9a)- تمت إضافة طريقة
setNextScheduleTimeOverride
التي تسمح بضبط جداول العمل الدورية بدقة (I3b4da). - تمت إعادة تسمية "
getEarliestRunTimeMillis
" إلى "getNextScheduleTimeMillis
". (I2bd7a) - تمت إضافة معلومات وقت التشغيل المُجدوَلة التالية إلى
WorkInfo
. (I797e4) - وتتم إضافة معلومات التأخير الأولي ودورية التكرار إلى
WorkInfo
. (I52f2f) - طريقة تمت إضافتها لمراقبة العاملين من خلال المسارات
getWorkInfosByTagFlow
وgetWorkInfoByIdFlow
وgetWorkInfosForUniqueWorkFlow
وgetWorkInfosFlow
(If122a) - تمت إضافة تعليقات
@RequiresApi(...)
التوضيحية الناقصة إلى مُنشئي القيود وخصائصها. تتم الآن محاذاتها مع التعليقات التوضيحية المقابلة في مجموعات الضبط فيConstraints.Builder
التي كانت متوفّرة من الإصدارات الأولى منWorkManager
. (I6d7d2) - يفرض
WorkManager
الآن حدًا منفصلاً للعاملين في معرّف المحتوى (URI) لمنحهم خانات مضمونة فيJobScheduler
لتجنُّب فقدان تعديلات المحتوى بسبب الحمل الزائد. يمكن ضبط الحدّ من خلالConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - تمّت إضافة القيود إلى
WorkInfo
. (I162c0)
الإصدار 2.8
الإصدار 2.8.1
22 آذار (مارس) 2023
تم طرح "androidx.work:work-*:2.8.1
". يتضمّن الإصدار 2.8.1 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح خطأ ANR في "
RescheduleReceiver
" بسبب تعذُّر معالجة عمليتَي بث متزامنتين سابقًا. (b/236906724)
الإصدار 2.8.0
8 شباط (فبراير) 2023
تم طرح "androidx.work:work-*:2.8.0
". يتضمّن الإصدار 2.8.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 2.7.0
الميزات الجديدة
- تمت إضافة إمكانية تحديث
WorkRequests
بطريقة غير متداخلة، مع الحفاظ على وقت القائمة الأصلية والتسلسل وما إلى ذلك. يمكنك الاطّلاع على مشاركة المدونة التفصيلية حول هذه الميزة بالإضافة إلى مستندات java لـWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
للحصول على مزيد من التفاصيل.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل العمل مع الحفاظ على وقت الإدراج والتسلسل الأصلي له.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهي تشبهREPLACE
الحالية، ولكنها أقل إزعاجًا: لا تُلغي العامل في حال كانت قيد التشغيل حاليًا وتحافظ على وقت القائمة، حيث يتم احتساب التأخير الأولي والفترة من وقت الإدراج الأصلي في قائمة الانتظار، بدلاً من وقت التحديث. تم إيقافREPLACE
نهائيًا للحد من الالتباس بين الاسمَينREPLACE
وUPDATE
اللذين تحملان الاسم نفسه بشكل مشابه جدًا. إذا كنت لا تزال تريد الاحتفاظ بالدلالات السابقة لـREPLACE
، يمكن استخدامCANCEL_AND_REENQUEUE
المُضافة حديثًا، والتي تتطابق معREPLACE
. (I985ed، b/219446409) - تمت إضافة إمكانية اعتراض استثناءات الجدولة مع توفير
Consumer<Throwable>
من خلال setSchedulingExceptionHandler). - تمت إضافة إمكانية توفير
Consumer<Throwable>
من خلال setPreviewizationExceptionHandler لتحديد ما إذا كانت هناك مشاكل عند محاولة إعداد WorkManager. - تم نقل أدوات المساعدة المضمّنة لـ
OneTimeWorkRequest
وPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، b/209145335). - تمت إضافة الطرق المساعدة
WorkQuery.fromIds
وWorkQuery.fromStates
وWorkQuery.fromUniqueWorkNames
وWorkQuery.fromTags
لإنشاءWorkQuery
مباشرةً. (b/199919736) (If48f2, b/199919736) - تمّت إضافة "
getForegroundInfo
" إلى "Worker
". (Ic1ead) RxWorker
لكل من RxJava 2 وRxJava 3 الآنsetForeground
تعرضCompletable
والتي يمكن استخدامها بدلاً منsetForegroundInfoAsync
التي تعرضListenableFuture
RxWorker
لكل من RxJava 2 وRxJava 3 تحتوي علىgetForegroundInfo
تعرضSingle
والتي يمكن استخدامها بدلاً منgetForegroundInfoAsync
التي تعرضListenableFuture
. (b/203851459)- يمكن الآن إنشاء القيود بشكل مباشر بدلاً من استخدام
Constraints.Builder
، ما يتناسب مع مستخدمي Kotlin. (Idc390، b/137568653) - تمت إضافة إمكانية التحقّق مما إذا تم إعداد "
WorkManager
". تمت أيضًا إضافة واجهة برمجة تطبيقاتgetConfiguration()
جديدة لمطوّري المكتبات للحصول على الإعدادات التي تم استخدامها في تهيئةWorkManager
. (I6eff3، b/212300336)
إصلاح الأخطاء
- تم إصلاح مشكلة في برنامج الجدولة الجشع والتي قد تمنع العاملين من العمل فورًا عند التحميل. (I9686b، b/248111307)
- تمت إضافة "
@RequiresPermission
" إلى واجهات برمجة التطبيقات التي تتطلب منح إذن "POST_NOTIFICATIONS
" في الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278) - نشر عمليات الإلغاء في
CoroutineScope
علىListenableFuture
عند استخدامsuspendCancellableCoroutine
الإصدار 2.8.0-rc01
7 كانون الأول (ديسمبر) 2022
تم طرح "androidx.work:work-*:2.8.0-rc01
". يحتوي الإصدار 2.8.0-rc01 على هذه الالتزامات.
الميزات الجديدة
- لا تتوفّر ميزات جديدة في هذا الإصدار. هذا بشكل أساسي عبارة عن إصدار بسيط من اللعبة
الإصدار 2.8.0-beta02
9 تشرين الثاني (نوفمبر) 2022
تم طرح "androidx.work:work-*:2.8.0-beta02
". يحتوي الإصدار 2.8.0-الإصدار التجريبي 2 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح طريقة
equals
فيWorkInfo
، والتي لم تكن تأخذ في الاعتبار معلومات الإنشاء الجديد. (4977cc)
الإصدار 2.8.0-beta01
5 تشرين الأول (أكتوبر) 2022
تم طرح "androidx.work:work-*:2.8.0-beta01
". يتضمّن الإصدار 2.8.0-beta01 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة في برنامج الجدولة الجشع والتي قد تمنع العاملين من العمل فورًا عند التحميل. (I9686b، b/248111307)
الإصدار 2.8.0-alpha04
7 أيلول (سبتمبر) 2022
تم طرح "androidx.work:work-*:2.8.0-alpha04
". يتضمّن الإصدار 2.8.0-alpha04 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkerInfo.getGeneration()
وWorkerParameters.getGeneration()
، ما يعني إنشاء عامل جديد. يكون لدى العامل عدة أجيال إذا تم تحديثها من خلالWorkManager.updateWork
أوWorkManager.enqueueUniquePeriodicWork
باستخدامExistingPeriodicWorkPolicy.UPDATE
. ملاحظة: إذا كان العامل قيد التشغيل في الوقت الحالي، من الممكن أن تعرض هذه الطريقة إصدارًا أحدث من جيل العامل الذي يعمل حاليًا، وذلك في حال حدوث تحديث أثناء تنفيذ العامل. (I665c5، b/219446409) (I128a9، b/219446409) - تمت إضافة
InitializationExceptionHandler
، وهو "معالج الاستثناء" الذي يمكن استخدامه لتحديد ما إذا كانت هناك مشاكل عند محاولة إعدادWorkManager
. (I061de)
الإصدار 2.8.0-alpha03
10 آب (أغسطس) 2022
تم طرح "androidx.work:work-*:2.8.0-alpha03
". يتضمّن الإصدار 2.8.0-alpha03 هذه الالتزامات.
الميزات الجديدة
- تمت إضافة إمكانية تحديث
WorkRequests
بطريقة غير متداخلة، مع الحفاظ على وقت قائمة الانتظار الأصلي والتسلسل التسلسلي وما إلى ذلك. يمكنك الاطّلاع علىWorkManager.updateWork
وExistingPeriodicWorkPolicy.UPDATE
للحصول على مزيد من التفاصيل.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
WorkManager.updateWork
لتعديل العمل مع الحفاظ على وقت الإدراج والتسلسل الأصلي له.(I9a248، b/219446409) - تمت إضافة
ExistingPeriodicWorkPolicy.UPDATE
. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهي تشبهREPLACE
الحالية، ولكنها أقل إزعاجًا: لا تُلغي العامل في حال كانت قيد التشغيل حاليًا وتحافظ على وقت القائمة، حيث يتم احتساب التأخير الأولي والفترة من وقت الإدراج الأصلي في قائمة الانتظار، بدلاً من وقت التحديث. تم إيقافREPLACE
نهائيًا لتقليل الالتباس بين الاسمَينREPLACE
وUPDATE
المتشابهين جدًا. إذا كنت لا تزال تريد الاحتفاظ بالدلالات السابقة لـREPLACE
، يمكن استخدامCANCEL_AND_REENQUEUE
المُضافة حديثًا، والتي تتطابق معREPLACE
. (I985ed، b/219446409) - يمكنك إضافة إمكانية اعتراض استثناءات الجدولة من خلال تحديد
SchedulingExceptionHandler
. (I033eb) - تم نقل أدوات المساعدة المضمّنة لـ
OneTimeWorkRequest
وPeriodicWorkRequest
منandroidx.work:work-runtime-ktx
إلىandroidx.work:work-runtime
(I0010f، b/209145335).
إصلاح الأخطاء
- تمت إضافة
@RequiresPermission
إلى واجهات برمجة التطبيقات التي تتطلب منح إذن POST_NOTIFICATIONS في حزمة تطوير البرامج (SDK 33) والإصدارات الأحدث. (Ie542e، b/238790278)
الإصدار 2.8.0-alpha02
6 نيسان (أبريل) 2022
تم طرح "androidx.work:work-*:2.8.0-alpha02
". ي��توي الإصدار 2.8.0-alpha02 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- يمكن الآن إنشاء القيود بشكل مباشر بدلاً من استخدام "أداة الإنشاء"، وهي ميزة ملائمة لمستخدمي لغة 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 for RxJava 2 الآن على
getForegroundInfo
تعرض رمزSingle
الذي يمكن استخدامه بدلاً منgetForegroundInfoAsync
التي تعرضListenableFuture
. (I21c91، b/203851459) - تحتوي RxWorker for 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 إلى الإصدار التجريبي 01.
تغييرات واجهة برمجة التطبيقات
- لم تعُد ميزة
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
لإصلاح أي عطل عند استهداف 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 Inspectionor الآن عند استخدام 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)
المساهمة الخارجية
الإصدار 2.4.0
الإصدار 2.4.0
22 تموز (يوليو) 2020
تم طرح "androidx.work:work-*:2.4.0
". يتضمّن الإصدار 2.4.0 هذه الالتزامات.
التغييرات الرئيسية منذ الإصدار 2.3.0
- أصبح نظام جدولة مهام
WorkManager
أثناء المعالجة أكثر قدرة على اتّخاذ إجراء. في السابق، لم يكنScheduler
قيد المعالجة إلّا إنجاز الأعمال التي لم يتم تأخيرها وتم استيفاء قيودها. والآن، يتتبّع نظام الجدولة أثناء المعالجةWorkRequest
s التي يمكن تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequests. لا يلتزم أيضًاScheduler
قيد المعالجة بحدود الجدولة (ولكنه لا يزال مقيَّدًا بحجمExecutor
الذي يستخدمه WorkManager). وهذا يعني أنّ التطبيق يمكنه الآن تنفيذ عدد أكبر من WorkRequests عندما يكون التطبيق في المقدّمة. لإدارة تنفيذ العمل المتأخّر في المقدّمة، يوفّر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 API مباشرةً. 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) - تم الآن تمييز
WorkQuery.Builder
باسمfinal
. (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
s عندما يكون التطبيق في المقدّمة. (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
s التي تستغرق وقتًا طويلاً، بعد تجاوز نافذة التنفيذ التي تبلغ 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 الحد الأقصى البالغ 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) - تمت إضافة قواعد Lit لضمان تحديد
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()
". - تجمع المكتبة الآن قواعد الوبر الإضافية كجزء من المكتبة التي تساعد في اكتشاف الأخطاء مبكرًا.
الإصدار 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)
- تمت إضافة قاعدة Lit لضمان إزالة موفِّر المحتوى "
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)
- تم إصلاح خطأ يتسبّب في إنشاء قائمة
WorkRequest
فارغة بسلسلةWorkContinuation
غير صحيحة. (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
API في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
-ing فيCoroutineWorker
وsetProgress
فيRxWorker
والتي تعرضSingle<Void>
. من خلال هذه الميزات الجديدة، يمكن للعاملين في واجهات برمجة التطبيقات نقل معلومات مستوى التقدّم من خلالWorkInfo
الذي يتضمّن واجهةgetProgress
API مقابلة. (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
s مع القيدidle
. لن يتم استلام هذه الطلبات الآن إلا من قِبل "JobScheduler
" فقط عندما يكون سعر الجهاز فيidle
. (aosp/1089779) - يستخدم
TestScheduler
الآن بشكلٍ صحيحExecutor
المحدَّد لأداة تنفيذ المهام الداخلية في الاختبارات. (aosp/1090749)
الإصدار 2.2.0
الإصدار 2.2.0
15 آب (أغسطس) 2019
تم طرح "androidx.work:work-*:2.2.0
". يمكنك الاطّلاع هنا على العمولات التي تم تضمينها في هذا الإصدار.
هذا الإصدار مماثل للنسخة androidx.work:work-*:2.2.0-rc01
.
تغييرات مهمة في الإصدار 2.2.0 من 2.1.0
androidx.work:work-gcm:2.2.0
هو عنصر جديد من Maven الذي يتيح استخدام GCMNetworkManager كأداة جدولة عندما تتوفّر "خدمات Google Play" لمستويات واجهة برمجة التطبيقات <= 22. هذه هي إحدى التبعيات الاختيارية التي تساعد في معالجة الخلفية بشكل أكثر موثوقية وأداءً في إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذه الاعتمادية إلى ملف Gradle للحصول على دعم GCMNetworkManager تلقائيًا. في حال عدم توفّر "خدمات Play"، سيستمر استخدام WorkManager في استخدام AlarmManager على الأجهزة القديمة.
الإصدار 2.2.0-rc01
30 تموز (يوليو) 2019
تم طرح "androidx.work:work-*:2.2.0-rc01
". يمكنك الاطّلاع هنا على العمولات التي تم تضمينها في هذا الإصدار.
إصلاح الأخطاء
- تم إصلاح خطأ في تنفيذ AlarmManager يؤدي إلى إيقاف ال��دمة بشكل مبكر، ما يؤدي إلى حدوث
RejectedExecutionException
في حالات نادرة. (aosp/1092374) (b/138238197). - تمت إضافة حل بديل لـ
NullPointerException
��ند استخدام واجهات برمجة تطبيقاتJobScheduler
على بعض الأجهزة. (aosp/1091020) (b/138364061)، (b/138441699)
الإصدار 2.2.0-beta02
19 تموز (يوليو) 2019
تم طرح "androidx.work:work-*:2.2.0-beta02
". يمكنك الاطّلاع هنا على العمولات التي تم تضمينها في هذا الإصدار.
إصلاح الأخطاء
- تمت إزالة تبعية Jacoco غير المقصودة التي تم تقديمها في
2.2.0-beta01
.
الإصدار 2.2.0-beta01
17 تموز (يوليو) 2019
تم طرح "androidx.work:work-*:2.2.0-beta01
". يمكنك الاطّلاع هنا على العمولات التي تم تضمينها في هذا الإصدار.
الميزات الجديدة
androidx.work:work-gcm:2.2.0-beta01
هو عنصر جديد من Maven الذي يتيح استخدام GCMNetworkManager كأداة جدولة عندما تتوفّر "خدمات Google Play" لمستويات واجهة برمجة التطبيقات <= 22. هذه هي إحدى التبعيات الاختيارية التي تساعد في معالجة عمليات ذات كفاءة أكبر وموثوقية في الخلفية على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذه الاعتمادية إلى ملف Gradle للحصول على دعم GCMNetworkManager تلقائيًا. في حال عدم توفّر "خدمات Play"، سيستمر استخدام WorkManager في استخدام AlarmManager على الأجهزة القديمة.
إصلاح الأخطاء
- إصلاح المشكلة في
IllegalArgumentException
عند تتبُّع حالة الشبكة على أجهزة Nvidia Shield K1 اللوحية (aosp/1010188)
الإصدار 2.1.0
الإصدار 2.1.0
11 تموز (يوليو) 2019
تم طرح "androidx.work:work-*:2.1.0
". هذا الإصدار مماثل للنسخة androidx.work:work-*:2.1.0-rc01
.
التغييرات المهمة منذ الإصدار 2.0.1
- تتطلب "
work-runtime-ktx
" الآن Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلى "build.gradle
":kotlinOptions { jvmTarget = "1.8" }
- تمت إضافة إعداد WorkManager عند الطلب، والذي سيؤدي إلى إنشاء WorkManager عند الإشارة إليه فقط. b/127497100 لإعداد مشروعك للإعداد عند الطلب:
- إيقاف المهيئ التلقائي.
- نفِّذ
Configuration.Provider
في عنصرApplication
المخصّص. - يجب تغيير كل مراجع
WorkManager.getInstance()
إلىWorkManager.getInstance(Context)
. وفي إطار هذا التغيير، أوقفناWorkManager.getInstance()
نهائيًا. من الأفضل دائمًا استدعاء بديل "WorkManager.getInstance(Context)
" الجديد، حتى في حال لم تكن تتم إعداده عند الطلب.
PeriodicWorkRequest
ثانية تدعم الآن حالات التأخير الأولية. ويمكنك استخدام طريقةsetInitialDelay
علىPeriodicWorkRequest.Builder
لتحديد مهلة مبدئية. b/111404867- تمت إضافة إمكانية التفويض إلى
WorkerFactory
واحد أو أكثر مسجَّلَين باستخدام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
s بسبب إيقاف العملية. 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
تم طرح الإصدار 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
تم طرح الإصدار 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
- تم إصلاح عطل في الحالة الهامشية مع عدم تنظيف تتبع القيود على واجهات برمجة تطبيقات 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 وهو إصدار 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.
يُرجى ملاحظة أننا نشجع المستخدمين بشدة على التحديث إلى الإصدار WorkManager 2.x، لأنه سيكون هناك عدد قليل جدًا من التحديثات على فرع 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
التي تعرض علامةException
غير محدَّدة تم وضع علامة عليها الآن بشكل صحيح على أنّهاFAILED
ولن تؤدي إلى تعطُّل عملية التطبيق.
الإصدار 1.0.0-rc01
14 شباط (فبراير) 2019
هذا هو مرشح إصدار إصدار WorkManager الثابت 1.0.0. يحتوي هذا الإصدار على إصلاح خطأ واحد.
إصلاح الأخطاء
- يحترم التنفيذ المستند إلى AlarmManager الآن نوافذ
flex
بشكل صحيح لخدمة PeriodicWorkRequests. b/124274584
الإصدار 1.0.0-beta05
6 شباط (فبراير) 2019
يحتوي هذا الإصدار على بعض الأخطاء.
إصلاح الأخطاء
- تم إصلاح حالة استخدام
JobScheduler.getPendingJob(...)
على واجهة برمجة التطبيقات 23. b/123893059 - تم إصلاح
NullPointerException
على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو أقل. b/123835104
الإصدار 1.0.0-beta04
4 شباط (فبراير) 2019
يحتوي هذا الإصدار على بعض الأخطاء.
إصلاح الأخطاء
- تحسين جدولة RegionicWork للتنفيذ استنادًا إلى AlarmManager.
- تم إصلاح الحالة التي تعذّر فيها على WorkManager تتبُّع القيود بشكل صحيح عند استخدام التنفيذ المستند إلى AlarmManager. b/123379508
- تم إصلاح المشكلة التي كانت تحدث عندما تعذّر على WorkManager إعادة محاولة العمل عند إنهاء العملية عند استخدام تطبيق AlarmManager المستند إلى 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
على طريقتين 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
أعطال في واجهة برمجة التطبيقات
- تم إيقاف ميزة Firebase JobDispatcher بسبب اقتراب موعد إيقافها نهائيًا. هذا يعني أنّه لن يتم تحديث عنصر
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
.
هناك تغييرات قد تؤدي إلى حدوث تغييرات في واجهة برمجة التطبيقات في هذا الإصدار. يُرجى الاطّلاع على القسم أعطال واجهة برمجة التطبيقات أدناه.
تغييرات واجهة برمجة التطبيقات
- يقدّم "
work-runtime-ktx
" إصدارًا جديدًا من "CoroutineWorker
". - تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمت إعادة تسمية جميع صيغ طريقةgetStatus
المقابلة إلى صيغgetWorkInfo
المقابلة. هذا تغيير قد يؤدي إلى عطل. - لم يعُد
ListenableWorker.onStopped()
يقبلها تحتوي على وسيطة منطقية تشير إلى ما إذا تم إلغاءWorkRequest
أم لا. لم تعُدWorkManager
تتيح هذا الاختلاف. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. هذا تغيير قد يؤدي إلى عطل. - لم تعُد أ��و��ت ال��ب�� على
Constraints
جزءًا من واجهة برمجة التطبيقات العامة. هذا تغيير قد يؤدي إلى عطل. - عرض
WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفائف في السابق. والآن، تعرض هذه الطرق المجموعات. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. هذا تغيير قد يؤدي إلى عطل. - لم تعُد الدالة الإنشائية لـ
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. هذا تغيير قد يؤدي إلى عطل. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. هذا تغيير قد يؤدي إلى عطل. - تمت إضافة الكثير من تعليقات
@NonNull
التوضيحية إلى واجهة برمجة التطبيقات العامة بهدف تحسين بيئة العمل. - إضافة واجهة برمجة تطبيقات
WorkManager.enqueueUniqueWork()
لإدراج واجهاتOneTimeWorkRequest
فريدة في قائمة الانتظار بدون الحاجة إلى إنشاءWorkContinuation
- تعرض الآن جميع خيارات طرق
enqueue
وcancel
علىWorkManager
نوعOperation
جديدًا. هذا تغيير قد يؤدي إلى عطل. - لم تعُد جميع صيغ
enqueue
تقبل صيغ "WorkRequest
". هذا تغيير قد يؤدي إلى عطل. يمكنك استخدام "المجموعات" بدلاً من ذلك. ويمكنك استخدامArrays.asList()
لتعديل الرمز الحالي. وقد أجرينا ذلك لتقليل مساحة واجهة برمجة التطبيقات وعدد طرقها. - في حال محاولة
initialize
WorkManager
أكثر من مرة في كل عملية، سيتم الآن الحصول علىIllegalStateException
. هذا تغيير قد يؤدي إلى عطل.
إصلاح الأخطاء
- تستخدم
WorkRequest.Builder
في العنصرwork-runtime-ktx
الآنListenableWorker
. إصلاحات b/117666259 - تأكَّد من أنّ وقت تشغيل "
PeriodicWork
" التالي في المستقبل. إصلاحات b/118204399 - إزالة عمليات الإدخال والإخراج المحتملة للقرص عند استخدام WorkManager عند بدء تشغيل التطبيق إصلاحات b/117796731
- إصلاح حالة سباق في
WorkConstraintsTracker
. إصلاحات android-workmanager/issues/56
أعطال في واجهة برمجة التطبيقات
- تمت إعادة تسمية
WorkStatus
إلىWorkInfo
. تمت إعادة تسمية جميع صيغ طريقةgetStatus
المقابلة إلى صيغgetWorkInfo
المقابلة. - لم يعُد
ListenableWorker.onStopped()
يقبلها تحتوي على وسيطة منطقية تشير إلى ما إذا تم إلغاءWorkRequest
أم لا. لم تعُدWorkManager
تتيح هذا الاختلاف. - تمت إعادة تسمية حزمة
androidx.work.test
إلى حزمةandroidx.work.testing
. - لم تعُد أدوات الضبط على
Constraints
جزءًا من واجهة برمجة التطبيقات العامة. - عرض
WorkerParameters.getTriggeredContentUris()
وWorkerParameters.getTriggeredContentAuthorities()
صفائف في السابق. والآن، تعرض هذه الطرق المجموعات. - تمت إعادة تسمية
ListenableWorker.onStartWork()
إلىListenableWorker.startWork()
. - لم تعُد الدالة الإنشائية لـ
WorkStatus
جزءًا من واجهة برمجة التطبيقات العامة. - تمت إعادة تسمية
Configuration.getMaxJobSchedulerID()
وConfiguration.getMinJobSchedulerID()
إلىConfiguration.getMinJobSchedulerId()
وConfiguration.getMaxJobSchedulerId()
على التوالي. - تعرض الآن جميع خيارات طريقتَي
enqueue
وcancel
علىWorkManager
نوعOperation
جديدًا. - لم تعُد ��ميع صيغ
enqueue
تقبل صيغ "WorkRequest
". - في حال محاولة
initialize
WorkManager
أكثر من مرة في كل عملية، سيتم الآن الحصول علىIllegalStateException
.
الإصدار 1.0.0-alpha10
11 تشرين الأول (أكتوبر) 2018
يتيح هذا الإصدار العمل غير المتزامن الذي يتحكّم فيه المطوّرون. هناك تغييرات قد تؤدي إلى حدوث تغييرات في واجهة برمجة التطبيقات في هذا الإصدار. يُرجى الاطّلاع على القسم أعطال واجهة برمجة التطبيقات أدناه.
نتوقّع دخول WorkManager المراحل النهائية من فترة الإصدار الأولي. نتوقّع أن تكون واجهة برمجة التطبيقات مستقرة في الإصدار التجريبي، لذا يُرجى تخصيص بعض الوقت لإرسال ملاحظاتك حول أداة تتبُّع المشاكل.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة جميع الطرق وفئات
deprecated
السابقة، لا سيما دالة إنشاءWorker
التلقائية. هذا تغيير قد يؤدي إلى عطل في واجهة برمجة التطبيقات. - تمت إعادة التسمية
NonBlockingWorker
إلىListenableWorker
، والتي أصبحت الآن فئة عامة غير مخفية وجاهزة للاستخدام.- تتيح
ListenableWorker
إمكانية الوصول إلى طريقة مجردة واحدة، وهيListenableFuture<Payload> onStartWork()
، والتي يتم استدعاؤها في سلسلة التعليمات الرئيسية. الأمر متروك لك لبدء العمل ومعالجته بشكل غير متزامن. وعند الانتهاء، عليك تعديلListenableFuture
بشكل مناسب. تتوفّر آليات تنفيذ المرجع لـListenableFuture
في حزمةFutures
فيalpha02
(راجِع القسمWorkManager
أدناه). - توسّع الدالة
Worker
نطاقListenableWorker
وما زالت تعمل كما في السابق، باستخدام طريقةResult doWork()
مجردة. - تم إجراء ترتيب عشوائي لبعض الطرق والأعضاء من
Worker
إلىListenableWorker
. - سنوفِّر قريبًا عمليات تنفيذ مرجعية لـ
ListenableWorker
التي تستخدم كورروتينات Kotlin (بعد طرح الإصدارات الثابتة) وRxJava2.
- تتيح
- تم دمج الواجهة
WorkerFactory
والتنفيذ الملموسDefaultWorkerFactory
في فئة مجردة تسمىWorkerFactory
. تضمن عملية التنفيذ أن يكون السلوك التلقائي المستند إلى الانعكاس هو الجهد الأخير لأي مثيلاتWorkerFactory
ينشئها المستخدم. هذا تغيير قد يؤدي إلى عطل. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
وجميع الطرق ذات الصلة. تمت إضافةListenableFuture<Void>
كنوع العرض للعديد من الطرق في واجهة برمجة التطبيقات. هذا تغيير قد يؤدي إلى عطل في واجهة برمجة التطبيقات.- يمكنك الآن الحصول على المعلومات والمراقبة بشكل متزامن باستخدام
ListenableFuture
. على سبيل المثال، كانت الدالةWorkManager.enqueue()
تعرض القيمةvoid
، لكنّها الآن تعرضListenableFuture<Void>
. يمكنك طلب الرقمListenableFuture.addListener(Runnable, Executor)
أوListenableFuture.get()
لتشغيل الرمز بعد اكتمال العملية. - ملاحظة: لا توضّح لك
ListenableFuture
هذه ما إذا نجحت العملية أو تعذّر إتمامها، بل تشير إلى اكتمال العملية فقط. ستظل بحاجة إلى ربط طرق WorkManager لمعرفة هذه المعلومات. - ونتجاهل طلبات
cancel()
على هذه العناصر لأنّها مربكة ويصعب تفسيرها (هل تلغي العملية أم العمل الناتج عن ذلك؟). ينطبق ذلك ضمن عقد "Future
". - للحفاظ على التماثل مع طُرق
getStatus*
المتزامنة، قدّمنا صيغListenableFuture
وأعدنا تسمية الصيغ الحالية التي عرضتLiveData
لكي تتضمّن بشكل واضح "LiveData" كجزء من الاسم (على سبيل المثال،getStatusesByIdLiveData(UUID)
). هذا تغيير قد يؤدي إلى عطل في واجهة برمجة التطبيقات.
- يمكنك الآن الحصول على المعلومات والمراقبة بشكل متزامن باستخدام
إصلاح الأخطاء
- تم إصلاح المشكلة المعروفة من الإصدار alpha09 بشأن ملفات
androidx-annotations.pro
المكرّرة. يمكنك إزالة هذا الحل من ملاحظات الإصدار السابقة عن طريق حذفexclude 'META-INF/proguard/androidx-annotations.pro'
من ملف Gradle. - تمت إضافة إعدادات Proguard للحفاظ على دالة إنشاء
Worker
الجديدة. b/116296569 - إصلاح
NullPointerException
المحتملة في حالة سباق كان العمل فيهREPLACE
d. b/116253486 وb/116677275 - يقبل
WorkContinuation.combine()
الآن عنصرWorkContinuation
أو أكثر بدلاً من اثنين أو أكثر. b/117266752
أعطال في واجهة برمجة التطبيقات
- تمت إزالة جميع الطرق وفئات
deprecated
السابقة، لا سيما دالة إنشاءWorker
التلقائية. - تم دمج الواجهة
WorkerFactory
والتنفيذ الملموسDefaultWorkerFactory
في فئة مجردة تسمىWorkerFactory
. - تمت إزالة
WorkManager.synchronous()
وWorkContinuation.synchronous()
. - تعرض
WorkManager.getStatus*()
طريقة الآن عرضListenableFuture
. تعرض "WorkManager.getStatus*LiveData()
"LiveData
ثانية.
الإصدار 1.0.0-alpha09
19 أيلول (سبتمبر) 2018
مشكلة معروفة
إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف واحد بالمسار المستقل لنظام التشغيل 'meta-INF/proguard/androidx-annotations.pro'"، يُرجى وضع ما يلي في ملف Gradle كحل بديل مؤقت أثناء إصلاح المشكلة في alpha10:
رائع
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
إصلاح الأخطاء
- تمت إضافة إصلاح آخر كان مطلوبًا للخطأ "100 مهمة". b/115560696
- تمت إضافة بعض الإصلاحات لأخطاء قيد المفتاح الخارجي بسبب شروط السباق. b/114705286
- طلبات
ConstraintTrackingWorker.onStopped(boolean)
المفوَّضة إلىWorker
الأساسية b/114125093 - طبِّق الحد الأدنى الصحيح لتأخير عملية المراجعة لوظيفة Firebase JobDispatcher b/113304626
- ضمانات سلاسل محادثات محسّنة داخليًا في المكتبة
- تصحيح مشكل�� محتمَلة من خلال إزالة تكرار
LiveData
داخليًا
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء مثيلات
Worker
الخاصة بك في وقت التشغيل من خلال تحديدWorkerFactory
كجزء منWorkManager.Configuration
. المصنع الاحتياطي هوDefaultWorkerFactory
، الذي يطابق سلوك الإصدارات السابقة من WorkManager.- تم الآن وضع علامة على دوال الإنشاء التلقائية لـ
Worker
وNonBlockingWorker
على أنّها متوقّفة نهائيًا. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)
) واستدعاءsuper(Context, WorkerParameters)
؛ وستزيل الإصدارات المستقبلية من WorkManager الدالة الإنشائية التلقائية.
- تم الآن وضع علامة على دوال الإنشاء التلقائية لـ
- لقد بدأنا في استخدام أداة
ListenableFuture
الجديدة داخليًا (خالية من تبعيات Guava). سنقدم ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيؤدي هذا التغيير إلى إظهار ميزةNonBlockingWorker
النهائية. - إضافة إمكانية تشغيل العمل المحدد زمنيًا في
TestDriver
من خلالTestDriver.setInitialDelayMet(UUID)
وTestDriver.setPeriodDelayMet(UUID)
b/113360060
تغييرات قد تؤدي إلى عطل
- تم إيقاف التركيبات الإنشائية التلقائية
Worker
وNonBlockingWorker
نهائيًا. يُرجى الانتقال إلى الدالة الإنشائية الجديدة في أسرع وقت ممكن. ستزيل الإصدارات المستقبلية الدالة الإنشائية الافتراضية.
الإصدار 1.0.0-alpha08
27 آب (أغسطس) 2018
إصلاح الأخطاء
- يتم تصنيف مكونات WorkManager بوضوح على أنّها تشغيل مباشر غير مدرك، لذا لا يتم تنشيطها أثناء التشغيل المباشر. في المستقبل، سنقدم إصدارًا من WorkManager يتيح بدء التشغيل بشكل مباشر. b/112665532
- تم إصلاح مشكلة عدم تشغيل العمل الذي تمت إعادة تحميله. b/112604021
- تم إصلاح العمل الدوري الذي لا يتم تنفيذه بشكل متكرر (يتعلق بالمشكلة أعلاه). b/112859683
- تم احترام سياسات التراجع عندما تكون عملية التطبيق قيد التشغيل بالفعل.
- رسائل الاستثناء المصححة في
Data
للإشارة إلى أن الحد الأقصى هو 10 كيلوبايت. - تم خفض الحد الأقصى للقيم�� من
Configuration.setMaxSchedulerLimit(int)
إلى 50 لمراعاة بعض وقت الاستجابة في اكتمال معالجةJobScheduler
. b/112817355
الإصدار 1.0.0-alpha07
16 آب (أغسطس) 2018
إصلاح الأخطاء
- تم إصلاح طلب SQL محتمل بحدود سالبة يمكن أن تعرض عددًا غير محدود من النتائج.
- يؤدي العمل الذي تم الانتهاء من تنفيذه الآن إلى إلغاء جميع النسخ المعلَّقة من هذا العمل في برامج جدولة أخرى بشكل صحيح. وأدى ذلك إلى تجاوز الحد الأقصى المسموح به لعدد الوظائف البالغ
JobScheduler
. b/111569265 - تم إصلاح
ConcurrentModificationException
فيConstraintTracker
. b/112272753 - تم تغيير التعليقات التوضيحية لنوع الإرجاع لـ
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229
تغييرات واجهة برمجة التطبيقات
- تم الآن تمديد صف دراسي جديد من قِبل "
Worker
"، وهوNonBlockingWorker
. لن يؤثر ذلك في أي استخدامات حالية. في المستقبل، ستصبح خدمةNonBlockingWorker
كيانًا متوافقًا بالكامل مع حلول سلاسل المحادثات المخصّصة. - تم تغيير التعليقات التوضيحية لنوع الإرجاع لـ
Data.getBooleanArray(String)
وData.getIntArray(String)
إلى@Nullable
بدلاً من@NonNull
. b/112275229 - إضافات Kotlin: تم إيقاف
Map.toWorkData()
نهائيًا وأضافتworkDataOf(vararg Pair<String, Any?>)
ذات المستوى الأعلى لتكون أكثر اتساقًا مع واجهات برمجة التطبيقات الحالية.
الإصدار 1.0.0-alpha06
1 أغسطس 2018
إصلاح الأخطاء
- منع قفل قاعدة البيانات عند جدولة العمل. b/111801342
- إصلاح خطأ يؤدي إلى عدم تشغيل
PeriodicWork
في الموعد المحدَّد أثناء استخدام وضع "القيلولة". b/111469837 - يجب إصلاح أحد حالات السباق عند تتبُّع القيود التي تؤدي إلى تعطُّل
WorkManager
. googlecodelabs/android-workmanager/issues/56 - يمكنك إنشاء
WorkRequest
فريدة عند استخدام "WorkRequest.Builder#build()
". b/111408337 - تفعيل استخدام
RescheduleReceiver
فقط عند وجودWorkRequest
التي تحتاج إليها. b/111765853
الإصدار 1.0.0-alpha05
24 يوليو 2018
تغييرات واجهة برمجة التطبيقات
- تم إضافة تعليقات توضيحية إلى
WorkManager.getInstance()
باستخدام@NonNull
بدلاً من@Nullable
. بدلاً من ذلك، إذا لم يتم إعداد المفرد المفرد بشكلٍ صحيح في حالات الإعداد اليدوي، ستعرض الطريقة الخطأIllegalStateException
. هذا تغيير جذري في واجهة برمجة التطبيقات. - تمت إضافة واجهة برمجة تطبيقات جديدة،
Configuration.Builder.setMinimumLoggingLevel(int)
، يمكنها التحكّم في مستوى الإسهاب في WorkManager. ويسجّل WorkManager تلقائيًا الإصدارLog.INFO
والإصدارات الأحدث. - تم تغيير توقيع
Data.getString()
، وبالتالي لا يتم استخدام قيمة تلقائية بعد ذلك (إنهاnull
ضمنيًا). وهذا تغيير مؤقت في واجهة برمجة التطبيقات. - تم وضع علامة
@hide
على بعض الطرق اللازمة للاستخدام الداخلي فقط. ويشمل ذلك الدالة الإنشائيةConstraints
وData.toByteArray()
وData.fromByteArray(byte[])
. هذا تغيير قد يؤدي إلى عطل في واجهة برمجة التطبيقات.
إصلاح الأخطاء
- لم يعد WorkManager ينفّذ أي عمل أثناء حالات النسخ الاحتياطي التلقائي المعروفة. ربما أدى ذلك إلى حدوث عطل. b/110564377
- تم إصلاح جدولة
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
" بعد إعادة تشغيل الجهاز.تستمر المهام التي تتضمّن معرّف الموارد المنتظم للمحتوى الآن في جميع عمليات إعادة التشغيل. b/80234744
التعديلات على المستندات: b/109827628، b/109758949، b/80230748
تم إصلاح عطل عند إعادة إضافة
WorkRequest
إلى قائمة الانتظار. b/109572353.تم إصلاح تحذيرات برنامج التجميع البرمجي لـ Kotlin عند استخدام تبعية
work-runtime-ktx
.يستخدم WorkManager الآن الإصدار
1.1.1-rc1
منRoom
.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
getStatusesSync()
، وهو الإصدار المتزامن منWorkContinuation.getStatuses()
. - لدى "
Worker
" إمكانية التفريق بين عملية الإلغاء التي يجريها المستخدم والتوقف المؤقت الذي يطلبه نظام التشغيل. تعرِض بطاقة "Worker.isStopped()
" القيمة "true
" في حال طلب أي نوع من التوقّف. يعرضWorker.isCancelled()
القيمةtrue
عند إلغاء العمل صراحةً. b/79632247 - إضافة دعم لـ JobParameters#getNetwork() على واجهة برمجة التطبيقات 28. تم الكشف عن ذلك من خلال
Worker.getNetwork()
. - تمت إضافة السمة
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
لتتمكّن من فرض عدد المهام التي يمكن إرسالها إلىJobScheduler
أوAlarmManager
. يساعد هذا الإجراء في منع "WorkManager
" من أخذ جميع خانات البيانات المتاحة في "JobScheduler
". - تمت إضافة
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
للمساعدة في تحديد مجموعة من معرّفات الوظائفJobScheduler
الآمنة لاستخدامWorkManager
. b/79996760 - تعرض
Worker.getRunAttemptCount()
عدد عمليات التنفيذ الحالية لعنصرWorker
محدَّد. b/79716516 - يتيح لك
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
إدراجPeriodicWorkRequest
فريدة في قائمة الانتظار. b/79600647 - يلغي
WorkManager.cancelAllWork()
جميعWorker
. يمكن للمكتبات التي تعتمد علىWorkManager
طلب البحث عن آخر مرة تم فيها استدعاء هذه الطريقة باستخدامWorkManager.getLastCancelAllTimeMillis()
لتنظيف الحالة الداخلية. - تمت إضافة
WorkManager.pruneWork()
لإزالة المهام المكتملة من قاعدة البيانات الداخلية. b/79950952، b/109710758
التغييرات في السلوك
- تمت إضافة علامة ضمنية لجميع
WorkRequest
، وهي اسم فئة مؤهل بالكاملWorker
. يتيح ذلك إمكانية إزالةWorkRequest
بدونtag
أو في حال عدم توفّرid
. b/109572351
تغييرات قد تؤدي إلى عطل
- تمت إعادة تسمية "
Worker.WorkerResult
" إلى "Worker.Result
". - تحتوي
Worker.onStopped
الآن على مَعلمةisCancelled
إضافية تم ضبطها علىtrue
عند إلغاءWorker
بشكلٍ صريح.
الإصدار 1.0.0-alpha02
24 أيار (مايو) 2018
إصلاح الأخطاء
- تم تعديل
NullPointerException
فيState.isFinished()
. b/79550068 - تم إصلاح مشكلة تسبّبت في إعادة جدولة مواعيد "
Worker
" فيApplication.onCreate()
. b/79660657 - تم إصلاح مشكلة يمكنك فيها جدولة عمل أكثر مما يسمح به نظام التشغيل. b/79497378
- تم نقل عملية تنظيف عمليات قفل التنشيط المرتبطة بـ
Worker
إلى سلسلة محادثات الخلفية. - يتم الآن تنفيذ عملية تنفيذ
AlarmManager
بشكلٍ صحيح عند اكتمال جميع الأعمال المعلَّقة. - تم إصلاح استعلامات SQL (لغة الاستعلام البنيوية) التي أثرت على اللغات غير الإنجليزية. b/80065360
- تمت إضافة الدعم لـ
float
فيData
. b/79443878 - تعرض الدالة
Data.Builder.putAll()
الآن مثيلاً منBuilder
. b/79699162 - المزيد من ملفات javadoc والإصلاحات في الوثائق. b/79691663
تغييرات واجهة برمجة التطبيقات
- يمكن أن تتفاعل "
Worker
" مع إيقافها. يمكن استخدامWorker.isStopped()
للتحقق مما إذا تم إيقافWorker
. يمكن استخدامWorker.onStopped()
لإجراء عمليات تنظيف بسيطة. - تعرض واجهة برمجة تطبيقات
Worker.getTags()
Set
من العلامات المرتبطة بـWorker
. - تمت إضافة
javax.time.Duration
تحميل زائد لواجهات برمجة التطبيقات والتي تستغرق مجموعة من المدة وTimeUnit
ثانية. هذا المحتوى يحميه "@RequiresApi(26)
". - تم نقل
WorkManager
إضافة من حزمةandroidx.work.ktx
إلى حزمةandroidx.work
. تم إيقاف الإضافات القديمة نهائيًا وستتم إزالتها في إصدار مستقبلي. - تم إيقاف
Configuration.withExecutor()
نهائيًا. يمكنك استخدامConfiguration.setExecutor()
كبديل.
الإصدار 1.0.0-alpha01
8 أيار (مايو) 2018
يبسط WorkManager جدولة وتنفيذ
العمل المضمون والواعي بالقيود في الخلفية. هذا الإصدار الأولي هو 1.0.0-alpha01
.