مدير العمل

تسهّل واجهة برمجة تطبيقات WorkManager جدولة المهام غير المتزامنة والقابلة للتأجيل يجب أن يتم تشغيله بشكل موثوق. تتيح لك واجهات برمجة التطبيقات هذه إنشاء مهمة وتسليمها إلى تشغيل WorkManager عند تلبية قيود العمل.
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
7 أغسطس 2024 2.9.1 - - 2.10.0-alpha02

إعلان التبعيات

لإضافة تبعية على WorkManager، يجب إضافة مستودع Google Maven إلى المشروع:

أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle لـ لتطبيقك أو الوحدة التي تستخدمها:

رائع

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-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 على هذه الالتزامات.

التغييرات في واجهة برمجة التطبيقات

الإصدار 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

الميزات الجديدة

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة WorkManager.updateWork لتعديل الأعمال مع الحفاظ على وقت الإدراج الأصلي والتسلسل.(I9a248، b/219446409)
  • تمت إضافة ExistingPeriodicWorkPolicy.UPDATE. تسمح هذه السياسة بتعديل عمل دوري بالاسم. وهي تشبه REPLACE الحالية، ولكنها أقل تداخلاً، فهي لا يلغي عامل التشغيل إذا كان يعمل حاليًا مع الحفاظ على وقت الإدراج، إذ يتم احتساب مدة التأخّر الأولية والفترة من وقت الإدراج الأصلي بدلاً من وقت التعديل. تم إيقاف الدالة REPLACE نهائيًا لتقليل الالتباس بين الاسمَين REPLACE وUPDATE الذي تتشابه أسماؤهما إلى حد كبير. إذا أردت الاحتفاظ بالدلالات الدلالية السابقة للسمة REPLACE، يمكن استخدام CANCEL_AND_REENQUEUE المُضافة حديثًا، والتي تتطابق مع REPLACE. (I985ed، b/219446409)
  • تمت إضافة إمكانية اعتراض استثناءات الجدولة التي توفّر Consumer<Throwable> عبر setSchedulingExceptionHandler)
  • تمت إضافة إمكانية توفير Consumer<Throwable> من خلال setInitializationExceptionHandler لتحديد ما إذا كانت هناك مشاكل عند محاولة إعداد WorkManager.
  • أدوات مساعدة مضمّنة لـ OneTimeWorkRequest تم نقل PeriodicWorkRequest من androidx.work:work-runtime-ktx إلى androidx.work:work-runtime (I0010f، وb/209145335).
  • تمت إضافة الطرق المساعدة WorkQuery.fromIds وWorkQuery.fromStates وWorkQuery.fromUniqueWorkNames وWorkQuery.fromTags لإنشاء WorkQuery مباشرةً. (b/199919736) (If48f2، b/199919736)
  • تمت إضافة getForegroundInfo إلى Worker. (Ic1ead)
  • RxWorker لكل من RxJava 2 وRxJava 3 الآن setForeground تعرض Completable ويمكن استخدامها بدلاً من setForegroundInfoAsync التي تعرض ListenableFuture
  • RxWorker لكل من RxJava 2 وRxJava 3 getForegroundInfo تعرض Single ويمكن استخدامها بدلاً من getForegroundInfoAsync التي تعرض ListenableFuture. (b/203851459)
  • يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام Constraints.Builder، الذي يناسب مستخدمي Kotlin. (Idc390، b/137568653)
  • تمت إضافة إمكانية التحقّق مما إذا تم إعداد WorkManager. وتمت أيضًا إضافة واجهة برمجة تطبيقات getConfiguration() جديدة لمطوّري المكتبات للحصول على الإعدادات التي تم إعداد WorkManager باستخدامها. (I6eff3، b/212300336)

إصلاح الأخطاء

  • تم إصلاح مشكلة في نظام الجدولة الجشع الذي يمنع العاملين من العمل فورًا عندما يكون التحميل قيد التحميل. (I9686b، b/248111307)
  • تمت إضافة @RequiresPermission إلى واجهات برمجة التطبيقات التي تتطلّب منح إذن POST_NOTIFICATIONS في الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)
  • انشر عمليات الإلغاء في CoroutineScope على ListenableFuture عند استخدام suspendCancellableCoroutine.

الإصدار 2.8.0-rc01

7 كانون الأول (ديسمبر) 2022

تم طرح androidx.work:work-*:2.8.0-rc01. يحتوي الإصدار 2.8.0-rc01 على هذه عمليات التنفيذ.

الميزات الجديدة

  • لا تتوفّر ميزات جديدة في هذا الإصدار. هذا في الأساس تغيير أثناء الإصدار

الإصدار 2.8.0-beta02

9 تشرين الثاني (نوفمبر) 2022

تم طرح androidx.work:work-*:2.8.0-beta02. يحتوي الإصدار 2.8.0-beta02 على عمليات التنفيذ هذه.

إصلاح الأخطاء

  • تم إصلاح طريقة equals في WorkInfo، والتي لم تأخذ في الاعتبار معلومات الجيل الجديد. (4977cc)

الإصدار 2.8.0-beta01

5 تشرين الأول (أكتوبر) 2022

تم طرح androidx.work:work-*:2.8.0-beta01. يحتوي الإصدار 2.8.0-beta01 على هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح مشكلة في نظام الجدولة الجشع الذي يمنع العاملين من العمل فورًا عندما يكون التحميل قيد التحميل. (I9686b، b/248111307)

الإصدار 2.8.0-alpha04

7 أيلول (سبتمبر) 2022

تم طرح androidx.work:work-*:2.8.0-alpha04. يحتوي الإصدار 2.8.0-alpha04 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة WorkerInfo.getGeneration() وWorkerParameters.getGeneration() تؤدي إلى إنشاء عامل. لدى العامل أجيال متعددة، إذا تم تعديله عبر WorkManager.updateWork أو WorkManager.enqueueUniquePeriodicWork باستخدام ExistingPeriodicWorkPolicy.UPDATE. لاحظ أنه إذا كان العامل قيد التشغيل في الوقت الحالي، فمن الممكن لهذه الطريقة عرض جيل أحدث من جيل العامل قيد التشغيل حاليًا إذا حدث تحديث أثناء تنفيذ العامل. (I665c5، b/219446409) (I128a9، b/219446409)
  • تمت إضافة InitializationExceptionHandler، وهو معالج استثناء يمكن استخدامه لتحديد ما إذا كانت هناك مشاكل عند محاولة إعداد WorkManager. (I061de)

الإصدار 2.8.0-alpha03

10 آب (أغسطس) 2022

تم طرح androidx.work:work-*:2.8.0-alpha03. يحتوي الإصدار 2.8.0-alpha03 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمت إضافة إمكانية تعديل "WorkRequests" بطريقة غير متداخلة، مع الحفاظ على وقت الإدراج الأصلي والسلسلة وما إلى ذلك. يُرجى الانتقال إلى WorkManager.updateWork وExistingPeriodicWorkPolicy.UPDATE للحصول على مزيد من التفاصيل.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة WorkManager.updateWork لتعديل الأعمال مع الحفاظ على وقت الإدراج الأصلي والتسلسل.(I9a248، b/219446409)
  • تمت إضافة ExistingPeriodicWorkPolicy.UPDATE. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهي تشبه REPLACE الحالية، ولكنها أقل تداخلاً، فهي لا يلغي عامل التشغيل إذا كان يعمل حاليًا مع الحفاظ على وقت الإدراج، إذ يتم احتساب مدة التأخّر الأولية والفترة من وقت الإدراج الأصلي بدلاً من وقت التعديل. تم إيقاف الدالة REPLACE نهائيًا لتقليل الالتباس بين الاسمين "REPLACE" و"UPDATE" الذي تتشابه أسماؤهما إلى حد كبير. إذا أردت الاحتفاظ بالدلالات الدلالية السابقة للسمة REPLACE، يمكن استخدام CANCEL_AND_REENQUEUE المُضافة حديثًا، والتي تتطابق مع REPLACE. (I985ed، b/219446409)
  • أضِف إمكانية اعتراض استثناءات الجدولة من خلال تحديد SchedulingExceptionHandler. (I033eb)
  • أدوات مساعدة مضمّنة لـ OneTimeWorkRequest تم نقل PeriodicWorkRequest من androidx.work:work-runtime-ktx إلى androidx.work:work-runtime (I0010f، وb/209145335).

إصلاح الأخطاء

  • تمت إضافة @RequiresPermission إلى واجهات برمجة التطبيقات التي تتطلّب منح إذن POST_NOTIFICATIONS في الإصدار 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.

التغييرات في واجهة برمجة التطبيقات

إصلاح الأخطاء

  • عندما تتم إعادة جدولة المهام المُعجَّلة، لن يتم تسريعها بعد ذلك. وتصبح وظائف عادية.

الإصدار 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)

التغييرات في واجهة برمجة التطبيقات

الإصدار 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 الآن عمليات 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 لإعداد مشروعك للتهيئة عند الطلب:
    1. إيقاف أداة الإعداد التلقائية
    2. تنفيذ Configuration.Provider على عنصر Application المخصّص.
    3. تغيير كل المراجع لـ 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 لإعداد مشروعك للتهيئة عند الطلب:
    1. إيقاف أداة الإعداد التلقائية
    2. تنفيذ Configuration.Provider على عنصر Application المخصّص.
    3. تغيير كل المراجع لـ 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

لمزيد من المعلومات حول استخدام إضافات Kotlin، يمكنك الاطّلاع على مستندات KTX
المستندات المرجعية: 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. يُسجِّل 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
  • تسجيل الاستثناءات غير المرصودة التي تحدث أثناء تنفيذ العامل. 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.