WorkManager

تسهِّل واجهة برمجة التطبيقات WorkManager API جدولة المهام غير المتزامنة التي يمكن تأجيلها والتي يجب تنفيذها بشكل موثوق. تتيح لك واجهات برمجة التطبيقات هذه إنشاء مهمة وتسليمها إلى WorkManager لتشغيلها عند استيفاء قيود العمل.
آخر تعديل الإصدار الثابت إصدار مرشح الإصدار التجريبي الإصدار التجريبي الأول
30 تشرين الأول (أكتوبر) 2024 2.10.0 - - -

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

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

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

Groovy

dependencies {
    def work_version = "2.9.1"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Kotlin

dependencies {
    val work_version = "2.9.1"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation("androidx.work:work-multiprocess:$work_version")
}

للحصول على معلومات عن استخدام إضافات Kotlin، اطّلِع على مستندات ktx.

لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على إضافة عناصر الاعتماد الخاصة بالإصدار.

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 2.10

الإصدار 2.10.0

30 تشرين الأول (أكتوبر) 2024

تم تحرير androidx.work:work-*:2.10.0. يتضمّن الإصدار 2.10.0 عمليات الربط هذه.

التغييرات المهمة منذ الإصدار 2.9.1

  • تمت إضافة علامات تتبُّع إلى "المهام" من WorkManager، ما يسهّل فهم "adb shell dumpsys jobscheduler" كثيرًا لأنّه سيحتوي على اسم "العامل" الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبّع حول المناطق الرئيسية في WorkManager.
  • تمت إضافة Configuration.workerCoroutineContext للتحكّم في أداة الإرسال التي يتم فيها تنفيذ CoroutineWorker.
  • يمكن للمطوّرين تحديد NetworkRequest كقيد لأحد العمال من خلال الطريقة Constraints.setRequiredNetworkRequest. يتيح ذلك التحكّم بشكل أدق في الشبكة التي يجب أن يعمل عليها هذا العامل.
  • WorkManager تم الآن تجميع الإصدار 2.10.0 باستخدام حزمة SDK 35 ويحتوي على تغييرات مختلفة لتحقيق التوافق مع حزمة SDK 35.

الإصدار 2.10.0-rc01

24 أكتوبر 2024

تم تحرير androidx.work:work-*:2.10.0-rc01. يتضمّن الإصدار 2.10.0-rc01 عمليات الربط هذه.

الإصدار 2.10.0-beta01

2 تشرين الأول (أكتوبر) 2024

تم تحرير androidx.work:work-*:2.10.0-beta01. يتضمّن الإصدار 2.10.0-beta01 عمليات الربط هذه.

الإصدار 2.10.0-alpha04

18 أيلول (سبتمبر) 2024

تم تحرير androidx.work:work-*:2.10.0-alpha04. يتضمّن الإصدار 2.10.0-alpha04 عمليات الربط هذه.

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

  • أضِف سبب الإيقاف STOP_REASON_FOREGROUND_SERVICE_TIMEOUT عند إيقاف مشغّل في المقدّمة بسبب انتهاء مهلة التنفيذ استنادًا إلى نوع الخدمة التي تعمل في المقدّمة. (Ibd0af)

الإصدار 2.10.0-alpha03

4 أيلول (سبتمبر) 2024

تم تحرير androidx.work:work-*:2.10.0-alpha03. يتضمّن الإصدار 2.10.0-alpha03 هذه المساهمات.

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

  • تمت إضافة علامات تتبُّع إلى "المهام" من WorkManager، ما يسهّل فهم "adb shell dumpsys jobscheduler" كثيرًا لأنّه سيحتوي على اسم "العامل" الذي يتم تنفيذه. تتم أيضًا إضافة أقسام التتبّع حول المناطق الرئيسية في WorkManager.

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

  • تم الآن تجميع الإصدار 2.10.0 من WorkManager باستخدام حزمة تطوير البرامج (SDK) 35.
  • إصلاح مشكلة انتهاء مهلة عمليّات المقدّمة من النوع "خدمة قصيرة" و"مزامنة البيانات" وتسببها في حدوث خطأ ANR عندما لا يُطلِق WorkManager stopSelf() لا ينطبق هذا الإصلاح إلا على الأجهزة التي تعمل بالإصدارَين 34 و35 من واجهة برمجة التطبيقات، حيث تم تقديم أنواع الخدمات التي تعمل في المقدّمة. (ca06b2، b/364508145)
  • واجهات برمجة تطبيقات WorkerParameters جديدة تتيح تبديل العملية البعيدة التي يتم ربط Worker بها عند استخدام WorkerFactory (Ibdc8a وIe8a90 وI7373f)

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

  • إصلاح عطل ناتج عن محاولة WorkManager إعادة تشغيل أحد مهام العمل التي تستغرق وقتًا طويلاً (أي مهمة تعمل في المقدّمة) عندما كان نوع العمل الذي يعمل في المقدّمة يتضمّن أذونات مسبقة لنظام التشغيل Android 14 تم إبطالها (b/333957914)
  • تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة تطبيقات المنصة الجديدة لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام R8 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) ولجميع الإصدارات عند استخدام AGP 8.1 أو إصدار أحدث (مثل D8 الإصدار 8.1). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)

الإصدار 2.10.0-alpha02

17 نيسان (أبريل) 2024

تم تحرير androidx.work:work-*:2.10.0-alpha02. يتضمّن الإصدار 2.10.0-alpha02 هذه المساهمات.

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

  • تمت إضافة إمكانية إصدار نطاقات التتبُّع من خلال @RestrictTo Tracer قابل للضبط في WorkManager. (I17d7f، b/260214125)
  • تمت إضافة Configuration.workerCoroutineContext للتحكّم في أداة الإرسال التي يتم فيها تنفيذ CoroutineWorker. ويُنصح بتجنُّب استخدام Dispatchers.Default في WorkManager تمامًا. (Icd1b7)
  • إضافة عناصر معالجة استثناءات مخصّصة لـ Workers (Ib1b74، b/261190695)
  • يمكن الآن إنشاء OneTimeWorkRequest.Builder وPeriodicWorkRequest.Builder باستخدام KClass بدلاً من Class: val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • تم نقل فئة WorkManager إلى Kotlin. تقدّم الآن الطرق التي تعرض LiveData أو ListenableFuture أو Flow معلومات صحيحة حول إمكانية القيمة الخالية. وقد يتطلّب ذلك إجراء تغييرات في رمز المصدر الخاص بالعملاء، إذا كانت افتراضات ما إذا كان الحقل فارغًا في هذا الرمز غير صحيحة. (If6757)

الإصدار 2.10.0-alpha01

24 كانون الثاني (يناير) 2024

تم تحرير androidx.work:work-*:2.10.0-alpha01. يحتوي الإصدار 2.10.0-alpha01 على هذه المراجعات.

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

  • يمكن للمطوّرين تحديد NetworkRequest كقيد لعامل من خلال طريقة Constraints.setRequiredNetworkRequest. يتيح ذلك إمكانية التحكّم بشكل أدق في الشبكة التي يجب أن يعمل عليها هذا العامل.

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

  • إضافة إمكانية تحديد NetworkRequest كقيد (Id98a1، b/280634452)

الإصدار 2.9

الإصدار 2.9.1

7 آب (أغسطس) 2024

تم تحرير androidx.work:work-*:2.9.1. يتضمّن الإصدار 2.9.1 هذه المساهمات.

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

الإصدار 2.9.0

29 تشرين الثاني (نوفمبر) 2023

تم تحرير androidx.work:work-*:2.9.0. يحتوي الإصدار 2.9.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 2.8.0

  • إمكانية المراقبة من خلال Flow بدلاً من LiveData، يمكن الآن مراقبة مستوى تقدّم "العامل" من خلال WorkManager.getWorkInfosFlow وطرق مماثلة في Flow.
  • يوفّر WorkManager الآن تلميحًا عن سبب إيقاف عامل في السابق. يمكن إجراء طلب بحث من العامل نفسه من خلال طريقة getStopReason() أو من WorkInfo من خلال getStopReason().
  • تحديد جداول زمنية دقيقة للعمال المعنيين بتنفيذ مهام دورية من خلال setNextScheduleTimeOverride يتيح ذلك إجراء عملية حسابية ديناميكية لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات التحديث التكيُّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون أي تغييرات. يجب استخدام ExistingPeriodicWorkPolicy.UPDATE مع هذه الأساليب لتجنُّب إلغاء عامل حالي أثناء جدولة العامل التالي.
  • اختبار WorkManager باستخدام ميزة "مطابقة سلاسل المهام" في مرحلة الإنتاج يمكن استخدام ExecutorsMode.PRESERVE_EXECUTORS في initializeTestWorkManager للحفاظ على أدوات التنفيذ التي تم ضبطها في Configuration واستخدام سلسلة المهام الرئيسية الفعلية.
  • تم نقل واجهات برمجة التطبيقات الخاصة بـ Coroutines، مثل CoroutineWorker، من العنصر الإضافي work-runtime-ktx إلى العنصر الرئيسي work-runtime. وأصبح work-runtime-ktx فارغًا الآن.

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

  • تمت إضافة stopReason إلى WorkInfo. توفّر stopReason بعد تشغيل العامل. يمكن أن يكون ذلك مفيدًا في إعداد التقارير stopReason بطريقة قابلة للاستخدام، لأنّه بعد إيقاف أحد عمال الجلسة، يمكن إيقاف التطبيق نفسه بسرعة كبيرة. (I21386)
  • السماح بضبط Clock من خلال الإعداد واستخدامه لتحديد تسلسل تنفيذ اختبارات Worker (Ic586e)
  • تمت إضافة طريقة getStopReason() إلى ListenableWorker التي تشير إلى سبب إيقاف العامل. (I07060)
  • تمت إضافة WorkManagerTestInitHelper#closeWorkDatabase() لتجنُّب تحذير Closeguard بشأن الموارد التي تم تسريبها. (Ia8d49)
  • أصبحت طريقة وضع تصميم WorkInfo علنية الآن، ما قد يكون مفيدًا في الاختبار. (Ia00b6، b/209145335)
  • أصبحت work-runtime-ktx فارغة الآن، وأصبحت CoroutineWorker والأدوات الأخرى الخاصة بـ Kotlin متاحة الآن في العنصر الرئيسي لوقت التشغيل. (I71a9a)
  • تمت إضافة طريقة setNextScheduleTimeOverride التي تتيح ضبط جداول العمل الدورية بدقة (I3b4da)
  • تمت إضافة getNextScheduleTimeMillis للحصول على معلومات وقت التشغيل المجدوَل إلى WorkInfo. (I797e4)
  • تتم إضافة معلومات التأخير الأوّلي وفترة التكرار إلى WorkInfo. (I52f2f)
  • تمت إضافة طريقة مراقبة العمال من خلال "العمليات" من خلال الطرق getWorkInfosByTagFlow وgetWorkInfoByIdFlow وgetWorkInfosForUniqueWorkFlow وgetWorkInfosFlow (If122a).
  • تمت إضافة التعليقات التوضيحية @RequiresApi(...) غير المتوفّرة إلى وظائف الإنشاء والخصائص في Constraints. وهي الآن متوافقة مع التعليقات التوضيحية المقابلة لها في Constraints.Builder التي كانت موجودة في الإصدارات الأولى من WorkManager. (I6d7d2)
  • تمّ وضع حدّ منفصل الآن في WorkManager لعمال عناوين URL للمحتوى من أجل منحهم خانات مضمونة في 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)
  • السماح بضبط الساعة من خلال الإعدادات واستخدامها لتحديد تسلسل تنفيذ اختبارات Worker (Ic586e)
  • تمت إضافة طريقة getStopReason() إلى ListenableWorker التي تشير إلى سبب إيقاف العامل. (I07060)
  • تمت إضافة WorkManagerTestInitHelper#closeWorkDatabase() لتجنُّب تحذير Closeguard بشأن الموارد التي تم تسريبها. (Ia8d49)

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

  • تمّت إضافة إمكانية تجاوز overrideNextScheduleTime باستخدام TestDriver وإصلاح المشاكل المتعلّقة بقابلية الاختبار. (Ic2905)

الإصدار 2.9.0-alpha01

7 حزيران (يونيو) 2023

تم تحرير androidx.work:work-*:2.9.0-alpha01. يحتوي الإصدار 2.9.0-alpha01 على هذه المراجعات.

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

  • إمكانية المراقبة من خلال Flow بدلاً من LiveData، يمكن الآن مراقبة مستوى تقدّم "العامل" من خلال WorkManager.getWorkInfosFlow وطرق مماثلة في Flow.
  • تحديد جداول زمنية دقيقة للعاملين المتكررين من خلال setNextScheduleTimeOverride يتيح ذلك إجراء عملية حسابية ديناميكية لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات التحديث التكيُّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون أي تغييرات. يجب استخدام ExistingPeriodicWorkPolicy.UPDATE مع هذه الأساليب لتجنُّب إلغاء عامل حالي أثناء جدولة العامل التالي.
  • WorkManager يجري اختبارًا باستخدام ميزة "مطابقة سلاسل المحادثات" في مرحلة الإنتاج. يمكن استخدام ExecutorsMode.PRESERVE_EXECUTORS للحفاظ على أدوات التنفيذ التي تم ضبطها في Configuration واستخدام سلسلة المهام الرئيسية الحقيقية.
  • تم نقل واجهات برمجة التطبيقات الخاصة بـ 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 لعمال عناوين URL للمحتوى من أجل منحهم خانات مضمونة في 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

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

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

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

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

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

الإصدار 2.8.0-rc01

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

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

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

  • ما مِن ميزات جديدة في هذا الإصدار. هذا الإصدار هو في الأساس ترقية للإصدار

الإصدار 2.8.0-beta02

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

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

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

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

الإصدار 2.8.0-beta01

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

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

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

  • تم إصلاح مشكلة في جدولة المهام التي كانت تمنع تشغيل مهام العمل على الفور عند بدء تحميلها. (I9686b، b/248111307)

الإصدار 2.8.0-alpha04

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

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

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

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

الإصدار 2.8.0-alpha03

10 آب (أغسطس) 2022

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

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

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

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

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

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

  • تمت إضافة @RequiresPermission إلى واجهات برمجة التطبيقات التي تتطلّب منح الإذن POST_NOTIFICATIONS في حزمة تطوير البرامج (SDK) 33 والإصدارات الأحدث. (Ie542e، b/238790278)

الإصدار 2.8.0-alpha02

6 نيسان (أبريل) 2022

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

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

  • يمكن الآن إنشاء القيود مباشرةً بدلاً من استخدام Builder، ما يُعدّ مناسبًا لمستخدمي Kotlin. (Idc390، b/137568653)
  • تمت إضافة إمكانية التحقّق مما إذا تمّت تهيئة WorkManager. تمت أيضًا إضافة واجهة برمجة تطبيقات getConfiguration() جديدة لمطوّري المكتبات للحصول على الإعدادات التي تمّت بدء WorkManager بها. (I6eff3، b/212300336)

الإصدار 2.8.0-alpha01

12 كانون الثاني (يناير) 2022

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

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

  • تمت إضافة الطرق المساعِدة WorkQuery.fromStates وWorkQuery.fromUniqueWorkNames WorkQuery.fromTags لإنشاء WorkQuery مباشرةً. (If48f2، b/199919736)
  • إضافة طرق BuildCompat تجريبية لحِزم تطوير البرامج (SDK) المستقبلية (Iafd82، b/207528937)
  • أضِف getForegroundInfo إلى Worker. (Ic1ead)
  • تمت إضافة طرق مساعدة WorkQuery.fromIds لإنشاء WorkQuery مباشرةً من ids. (Ie5bdf، b/199919736)
  • يتضمّن RxWorker الآن setForeground الذي يعرض Completable ويُمكن استخدامه بدلاً من setForegroundInfoAsync الذي يعرض ListenableFuture. (I85156)
  • يتضمّن RxWorker في RxJava 2 الآن getForegroundInfo الذي يعرض Single ويُمكن استخدامه بدلاً من getForegroundInfoAsync الذي يعرض ListenableFuture. (I21c91، b/203851459)
  • يحتوي RxWorker في RxJava 3 الآن على getForegroundInfo يعرض Single يمكن استخدامه بدلاً من getForegroundInfoAsync الذي يعرض ListenableFuture. (I1ca8a)
  • يتضمّن RxWorker الآن setForeground الذي يعرض Completable ويُمكن استخدامه بدلاً من setForegroundInfoAsync الذي يعرض ListenableFuture. (I992a3، b/203851459)

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

  • نشر عمليات الإلغاء في CoroutineScope إلى ListenableFuture عند استخدام suspendCancellableCoroutine (I77e63)

الإصدار 2.7

الإصدار 2.7.1

17 تشرين الثاني (نوفمبر) 2021

تم تحرير androidx.work:work-*:2.7.1. يحتوي الإصدار 2.7.1 على هذه المراجعات.

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

  • يتمّ نشر عمليات الإلغاء في CoroutineScope إلى ListenableFuture عند استخدام suspendCancellableCoroutine. (I77e63)
  • يتم طرح استثناء على الفور عند وضع علامة "عاجل" على طلبات العمل المتأخرة. bef1762

الإصدار 2.7.0

13 تشرين الأول (أكتوبر) 2021

تم تحرير androidx.work:work-*:2.7.0. يحتوي الإصدار 2.7.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 2.6.0

  • يقدّم WorkManager واجهة برمجة تطبيقات WorkRequest.Builder.setExpedited(...) جديدة للمساعدة في معالجة القيود المفروضة على الخدمات التي تعمل في المقدّمة في Android 12.

  • عند استخدام setExpedited(...)، يفوّض WorkManager المهام المُسرَّعة في JobScheduler اعتبارًا من Android 12، مع توفير التوافق مع الإصدارات السابقة من Android من خلال تفويض الخدمة التي تعمل في المقدّمة.

الإصدار 2.7.0-rc01

29 أيلول (سبتمبر) 2021

تم تحرير androidx.work:work-*:2.7.0-rc01. يحتوي الإصدار 2.7.0-rc01 على هذه المراجعات.

هذا الإصدار مطابق للإصدار androidx.work:work-*:2.7.0-beta01.

الإصدار 2.7.0-beta01

1 أيلول (سبتمبر) 2021

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

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

  • تقليل الصراع بين عمليات SQLite المتعددة عند بدء WorkManager

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

  • أزِل واجهات برمجة تطبيقات @ExperimentalExpeditedWork لأنّ واجهات برمجة تطبيقات النظام الأساسي الأساسية لنظام التشغيل Android 12 (S) مستقرة. (aosp/1792806)

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

  • تقديم رسالة خطأ أفضل للعاملين في الطلبات العاجلة الذين لا ينفذون getForegroundInfoAsync() (aosp/1809376)

الإصدار 2.7.0-alpha05

21 تموز (يوليو) 2021

تم تحرير androidx.work:work-*:2.7.0-alpha05. يحتوي الإصدار 2.7.0-alpha05 على هذه المراجعات.

يتضمّن هذا الإصدار أيضًا إصلاحات للأخطاء من إصدار WorkManager 2.6.0-beta02.

الإصدار 2.7.0-alpha04

2 حزيران (يونيو) 2021

تم تحرير androidx.work:work-*:2.7.0-alpha04.

يتضمّن هذا الإصدار أيضًا التغييرات من الإصدار 2.6.0-beta01.

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

  • لم يعُد ListenableWorker.setForegroundAsync() متوقّفًا نهائيًا.
  • ننصحك باستخدام واجهة برمجة التطبيقات WorkRequest.Builder.setExpedited(...) كلما أمكن. لتقديم دعم أفضل للحالات التي لا يخضع فيها التطبيق لقيود الخدمة التي تعمل في المقدّمة، يمكن للمطوّرين استخدام واجهة برمجة التطبيقات ListenableWorker.setForegroundAsync().
  • في حال تمّ استدعاء ListenableWorker.setForegroundAsync() عندما يكون التطبيق خاضعًا لقيود الخدمة التي تعمل في المقدّمة، سيؤدي ذلك إلى طرح ForegroundServiceStartNotAllowedException.

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

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

الإصدار 2.7.0-alpha03

21 نيسان (أبريل) 2021

تم تحرير androidx.work:work-*:2.7.0-alpha03. يحتوي الإصدار 2.7.0-alpha03 على هذه المراجعات.

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

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

الإصدار 2.7.0-alpha02

10 آذار (مارس) 2021

تم تحرير androidx.work:work-*:2.7.0-alpha02. يحتوي الإصدار 2.7.0-alpha02 على هذه المراجعات.

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

  • يجب توضيح قابلية PendingIntent للتغيّر، وذلك لحلّ مشكلة تعطُّل عند استهداف Android 12. (b/180884673)

الإصدار 2.7.0-alpha01

18 شباط (فبراير) 2021

تم تحرير androidx.work:work-*:2.7.0-alpha01. يحتوي الإصدار 2.7.0-alpha01 على هذه المراجعات.

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

  • يقدّم WorkManager واجهة برمجة تطبيقاتWorkRequest.Builder.setExpedited(...) جديدة لمراعاة قيود الخدمة التي تعمل في المقدّمة في Android 12.

    لم يعُد بإمكان التطبيقات تشغيل خدمة تعمل في المقدّمة عندما تكون في الخلفية. لذلك، لتقديم دعم أفضل للعمل الذي يستغرق وقتًا طويلاً والذي كان مرتبطًا سابقًا بمراحل نشاط الخدمة التي تعمل في المقدّمة، يمكن للتطبيقات وضع علامة على WorkRequest على أنّها مُعجَّلة.

    هذه الواجهة هي بديل لواجهات برمجة التطبيقات setForegroundAsync(...) / setForeground(...) التي تم إيقافها نهائيًا.

    عند استخدام setExpedited(...)، يفوّض WorkManager المهام المُسرَّعة في JobScheduler بدءًا من Android 12، مع توفير التوافق مع الإصدارات السابقة من Android من خلال تفويض الخدمات التي تعمل في المقدّمة.

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

  • إتاحة استخدام WorkRequest المستعجلة

الإصدار 2.6.0

الإصدار 2.6.0

1 أيلول (سبتمبر) 2021

تم تحرير androidx.work:work-*:2.6.0. يحتوي الإصدار 2.6.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 2.5.0

  • يستخدم WorkManager الآن androidx.startup لإعداد WorkManager. إذا كنت قد استخدمت tools:node="remove" ContentProvider المستخدَم لبدء WorkManager في السابق، عليك إجراء ما يلي بدلاً من ذلك.

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • تمت إضافة دعم لـ "العمال" الذين يمكنهم العمل في أي عملية. (Iaf200)

  • تمت إضافة RemoteCoroutineWorker وهو عبارة عن تنفيذ RemoteListenableWorker يمكنه الربط بعملية عن بُعد. (I30578)

الإصدار 2.6.0-rc01

4 آب (أغسطس) 2021

تم تحرير androidx.work:work-*:2.6.0-rc01. يحتوي الإصدار 2.6.0-rc01 على هذه المراجعات.

هذا الإصدار مطابق للإصدار androidx.work:work-*:2.6.0-beta02.

الإصدار 2.6.0-beta02

21 تموز (يوليو) 2021

تم تحرير androidx.work:work-*:2.6.0-beta02. يحتوي الإصدار 2.6.0-beta02 على هذه المراجعات.

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

  • تم الآن إلغاء ربط RemoteWorkManager بـ RemoteWorkManagerService بشكل صحيح، ما يسمح لـ RemoteWorkManagerService بتنظيف البيانات بشكل صحيح. aosp/1730694
  • تم الآن إلغاء ربط RemoteListenableWorker بـ RemoteWorkerService بشكل صحيح، ما يسمح لـ RemoteWorkerService بتنظيف البيانات بشكل صحيح. aosp/1743817
  • لا يتم تشغيل ForceStopRunnable الآن إلا في عملية التطبيق الأساسية. يهدف هذا الإجراء إلى تحسين الأداء وتجنُّب التنافس على الموارد للتطبيقات التي تستخدم عمليات متعددة. aosp/1749180، aosp/1761729

الإصدار 2.6.0-beta01

2 حزيران (يونيو) 2021

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

يتضمّن هذا الإصدار بعض التحسينات البسيطة على المستندات. يتطابق الإصدار إلى حد كبير مع 2.6.0-alpha02.

الإصدار 2.6.0-alpha02

21 نيسان (أبريل) 2021

تم تحرير androidx.work:work-*:2.6.0-alpha02. يحتوي الإصدار 2.6.0-alpha02 على هذه المراجعات.

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

  • إضافة دعم لـ "العمال" الذين يمكن تشغيلهم في أي عملية (Iaf200)

  • تمت إضافة RemoteCoroutineWorker وهو تطبيق RemoteListenableWorker يمكن ربطه بعملية عن بُعد. (I30578)

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

  • تمت إضافة دعم لقيود الشبكة TEMPORARILY_UNMETERED. (I08d5e)
  • إتاحة استخدام وظائف متعددة في setProgressAsync() (Ib6d08)
  • اجعل WorkManagerInitializer علنية حتى تتمكّن androidx.startup.Initializer الأخرى من استخدامها كتبعيات. (I5ab11)

الإصدار 2.6.0-alpha01

24 آذار (مارس) 2021

تم تحرير androidx.work:work-*:2.6.0-alpha01. يحتوي الإصدار 2.6.0-alpha01 على هذه المراجعات.

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

  • يستخدم WorkManager الآن androidx.startup لإعداد WorkManager. في السابق، كان يتم تنفيذ ذلك من خلال androidx.work.impl.WorkManagerInitializer. (aosp/1608813)

    إذا كنت قد استخدمت tools:node="remove" ContentProvider المستخدَم لبدء دورة حياة العملية في السابق، عليك إجراء ما يلي بدلاً من ذلك.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (أو)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

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

  • أضِف واجهة برمجة تطبيقات Result.getOutputData() تعرض outputData الخاص بـ ListenableWorker. (Ie51e3)

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

  • أضِف حلًا بديلاً لحلّ خطأ المصنّع الأصلي للجهاز الذي يؤدي إلى ظهور خطأ SecurityException عند استخدام واجهات برمجة تطبيقات AlarmManager. (aosp/1587518)

الإصدار 2.5.0

.

الإصدار 2.5.0

27 كانون الثاني (يناير) 2021

تم تحرير androidx.work:work-*:2.5.0. يحتوي الإصدار 2.5.0 على هذه المراجعات.

التغييرات الرئيسية منذ الإصدار 2.4.0

  • عنصر :work:work-multiprocess جديد للتطبيقات التي تستخدم عمليات متعددة ويؤدي ذلك إلى تحسين الأداء من خلال توحيد جدولة طلبات العمل في عملية واحدة.
    • لاستخدام work-multiprocess، حدِّد تبعية على: implementation "androidx.work:work-multiprocess:2.5.0"
    • حدِّد عملية أساسية باستخدام Configuration.Builder.setDefaultProcessName(String).
    • عند استخدام work-multiprocess، عليك أيضًا استخدام RemoteWorkManager لإدارة WorkRequest. يتواصل RemoteWorkManager دائمًا مع العملية المحدّدة. يتم أيضًا تشغيل جدولة العمليات الداخلية في العملية المحدّدة.
  • في بعض الأحيان، لا يمكن لـ ActivityManager إنشاء مثيل JobService لبدء مهمة. يؤدي ذلك إلى إيقاف المهمة الأساسية بدون إشعار بسبب خطأ في المنصة. يضمن WorkManager الآن توفُّر مهام احتياطية لكل WorkRequest عند بدء Application من خلال مهام المصالحة. ويؤدي ذلك إلى تحسين موثوقية تنفيذ المهام بشكل كبير. (b/172475041، aosp/1489577)
  • WorkManager يحدّ من نمو قاعدة البيانات عن طريق تقليل مدة المخزن المؤقت الذي يتم تتبُّع WorkRequest فيه بعد اكتمال WorkRequest. كانت المدة 7 يومًا في السابق. تم خفضها إلى 1 يوم بالإضافة إلى مدة keepResultsForAtLeast. (aosp/1419708)
  • يتيح TestListenableWorkerBuilder الآن استخدام الفئة المُعاد تمثيلها التي تمديدها من ListenableWorker لتسهيل الاختبار. (aosp/1443299، b/169787349)
  • يتوفّر الآن أداة فحص WorkManager عند استخدام الإصدار Arctic Fox من Android Studio.

الإصدار 2.5.0-rc01

13 كانون الثاني (يناير) 2021

تم تحرير androidx.work:work-*:2.5.0-rc01. يحتوي الإصدار 2.5.0-rc01 على هذه المراجعات.

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

  • تم إصلاح خلل كان يؤدي إلى عدم إلغاء صلاحية getWorkInfosLiveData بشكل صحيح بعد تعديل الكيانات عند استخدام واجهة برمجة التطبيقات المستندة إلى WorkQuery. (aosp/1540566، b/173769028)
  • تم إصلاح خطأ كان يؤدي إلى عدم وضع علامة "ناجحة" على معاملات قاعدة البيانات في بعض الحالات النادرة. ويؤدي ذلك إلى حدوث مشاكل على بعض أجهزة Motorola. (aosp/1535368، b/175944460)
  • تم إصلاح خطأ لتجاهل NoSuchElementException عند محاولة إلغاء الربط بعملية غير نشطة. (aosp/1530589)
  • يمكنك تحسين ConstraintTrackingWorker لإيقاف ListenableWorker فقط إذا لم يتم إيقافه من قبل. (aosp/1496844، b/172946965)
  • تعديل مكتبات androidx.work لاستهداف Java 8 (Ibd2f2)

الإصدار 2.5.0-beta02

2 كانون الأول (ديسمبر) 2020

تم تحرير androidx.work:work-*:2.5.0-beta02. يحتوي الإصدار 2.5.0-beta02 على هذه المراجعات.

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

  • تم إصلاح خطأ في androidx.work:work-multiprocess حيث حظر WorkManager عن غير قصد سلسلة المهام التي تُجري عملية الاتصال عند محاولة الربط بالعملية المحدّدة. (aosp/1475538)
  • تم إصلاح خلل في عدم توفّر PeriodicWorkRequest بشكل صحيح. (b/172475041، aosp/1489577)
  • تمت إضافة حل بديل لأحد أخطاء النظام الأساسي عند إيقاف الخدمة التي تعمل في المقدّمة عند استخدام واجهات برمجة تطبيقات setForeground*. (b/170924044، aosp/1489901)

الإصدار 2.5.0-beta01

28 تشرين الأول (أكتوبر) 2020

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

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

  • يحدّ WorkManager تلقائيًا من عدد WorkRequest التي يمكن أن يرصدها جدول التشغيل الجاري. ولا يزال يتم تنفيذ الطلبات بترتيب "الأوّل في الداخل أولاً في الخارج". (aosp/1455228)
  • تحاول WorkManager الاسترداد عندما تكون قاعدة بيانات التطبيق في حالة سيئة. (aosp/1463103)

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

  • عند انقطاع ListenableWorker، ضَع علامة ENQUEUED عليها على الفور ليتمكّن الفريق من إعادة جدولتها لاحقًا. (aosp/1455618، b/170273988)

الإصدار 2.5.0-alpha03

14 تشرين الأول (أكتوبر) 2020

تم تحرير androidx.work:work-*:2.5.0-alpha03. يحتوي الإصدار 2.5.0-alpha03 على هذه المراجعات.

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

  • لا يستخدم النوعان TestListenableWorkerBuilder وTestWorkerBuilder الأنواع الأوّلية. (I883ad، b/169787349)

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

  • استخدِم ApplicationInfo لتحديد اسم عملية التطبيق التلقائية. (b/168716641، aosp/1429950)
  • يجب إصلاح قواعد مستوى الظهور لكلّ من RemoteWorkManager وRemoteWorkContinuation. لم تعُد واجهات برمجة التطبيقات هذه مصنّفة على أنّها @Restricted. (aosp/1432091)
  • يجب إصلاح قواعد Proguard للتطبيق :work:work-multiprocess. (aosp/1432091)
  • تحسين مراحل حياة الإشعارات للعمليات التي تستغرق وقتًا طويلاً والمرتبطة بخدمة تعمل في المقدّمة (b/168502234، aosp/1431331)

الإصدار 2.5.0-alpha02

16 أيلول (سبتمبر) 2020

تم تحرير androidx.work:work-*:2.5.0-alpha02. يحتوي الإصدار 2.5.0-alpha02 على هذه المراجعات.

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

  • أضِف واجهة برمجة تطبيقات إلى WorkQuery لتتمكّن من استخدام id لطلب البحث عن WorkInfo. (aosp/1412372، b/157335295)
  • يتيح WorkManager للتطبيقات التي تستخدم عمليات متعددة استخدام عنصر جديد (androidx.work:work-multiprocess:*) لدعمها بشكل أفضل. ويساعد هذا العنصر الجديد في حلّ بعض المشاكل التي تواجهها التطبيقات الكبيرة، بما في ذلك:
    • يجب عادةً إعداد WorkManager في كل عملية تطبيق. وهذا ليس أمرًا جيدًا لأنّ هناك زيادة في طلبات الحصول على SQLite، ما يؤدي بدوره إلى حدوث مشاكل أخرى. يتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام Configuration#setDefaultProcessName(processName). processName هو اسم عملية مؤهَّل بالكامل يبدو مثل packageName:processName (مثل com.example:remote).
    • مجموعة من واجهات برمجة التطبيقات الجديدة: RemoteWorkManager وRemoteWorkContinuation إلى enqueue وcancel وquery لطلبات العمل لا تتضمّن واجهات برمجة التطبيقات هذه الصيغ LiveData لتجنُّب تعارض SQLite في عمليات متعدّدة. تتم إعادة توجيه جميع طلبات البيانات إلى enqueue وcancel وquery إلى عملية تطبيق primary باستخدام AIDL وعرض ListenableFuture سلس. (aosp/1392657، aosp/1411210، aosp/1412215، aosp/1417713)

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

  • يزيل WorkManager الآن 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 التي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequests. لا تلتزم أيضًا مهام Scheduler قيد التنفيذ بحدود الجدولة (ولكنها لا تزال مقيّدة بحجم Executor المستخدَم من قِبل WorkManager). ويعني ذلك أنّه يمكن للتطبيق الآن تنفيذ المزيد من طلبات العمل عندما يكون في المقدّمة. لإدارة تنفيذ العمل المتأخر في المقدّمة، يوفّر WorkManager أيضًا RunnableScheduler قابل للضبط. (aosp/1185778)
  • يتيح WorkManager الآن استخدام RxJava 3. لاستخدام RxJava 3، يجب تضمين التبعية التالية: implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
  • تمت إضافة إمكانية البحث عن WorkInfo باستخدام WorkQuery. يكون ذلك مفيدًا عندما يريد المطوّرون البحث عن WorkInfo حسب مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع على WorkQuery.Builder.fromStates(...) أو WorkQuery.Builder. fromTags(...) أو WorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230، b/143847546)
  • أضِف إمكانية طلب معلومات التشخيص من WorkManager باستخدام:

    adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
    

    يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:

    • طلبات العمل التي اكتملت في آخر 24 ساعة
    • طلبات العمل التي يتم تنفيذها حاليًا
    • طلبات العمل المجدوَلة (aosp/1235501)
  • أضِف ExistingWorkPolicy.APPEND_OR_REPLACE الذي يشبه APPEND، ولكنّه يحلّ محل سلسلة تم إلغاء متطلباتها الأساسية أو تعذّر إكمالها. (b/134613984، aosp/1199640)

  • يجب توفير إمكانية إضافة RunnableScheduler مخصّص لتتبُّع طلبات العمل التي يجب تنفيذها في المستقبل. ويستخدمه "جدول التشغيل" أثناء عملية التنفيذ. (aosp/1203944)

  • إتاحة إضافة مصانع بشكل ديناميكي لتفويضها عند استخدام DelegatingWorkerFactory (b/156289105، aosp/1309745)

  • مواءمة تتبُّع قيود BATTERY_NOT_LOW بشكلٍ أوثق مع المنصة (aosp/1312583)

  • يستخدم جدول التشغيل أثناء العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويُعدّ ذلك مفيدًا لتقديم دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)

  • قواعد Lint الجديدة التي تفرض ما يلي:

    • استخدام foregroundServiceType المناسب عند استخدام واجهات برمجة تطبيقات setForegroundAsync() (b/147873061، aosp/1215915)
    • تحديد أرقام تعريف JobScheduler التي يجب أن يستخدمها WorkManager عند استخدام واجهات برمجة تطبيقات JobService مباشرةً. aosp/1223567
    • تمت إضافة قاعدة جديدة لفحص الأخطاء تضمن أنّ ListenableWorkerعمليات التنفيذ أصبحت الآن public عند استخدام WorkerFactory التلقائي. (aosp/1291262)
  • إنّ المكالمات التي يتم إجراؤها إلى setForegroundAsync() والتي لا تكتمل قبل اكتمال ListenableWorker سيتم الآن الإشارة إليها من خلال IllegalStateException في ListenableFuture المعروض. (aosp/1262743)

  • تم إصلاح خلل يمنع إيقاف ForegroundService بعد انقطاع Worker في المقدّمة. (b/155579898، aosp/1302153)

  • إصلاح خطأ يحاول فيه WorkManager تنفيذ نُسخ متعددة من Worker مرتبطة بخدمة تعمل في المقدّمة (b/156310133، aosp/1309853)

الإصدار 2.4.0-rc01

24 حزيران (يونيو) 2020

تم تحرير androidx.work:work-*:2.4.0-rc01. يحتوي الإصدار 2.4.0-rc01 على هذه المراجعات.

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

  • يستخدم جدول التشغيل أثناء العملية الآن واجهات برمجة تطبيقات أفضل لتحديد اسم العملية. ويُعدّ ذلك مفيدًا لتقديم دعم أفضل للتطبيقات التي تستخدم عمليات متعددة. (aosp/1324732)

الإصدار 2.4.0-beta01

20 أيار (مايو) 2020

يتم إصدار androidx.work:work-gcm:2.4.0-beta01 وandroidx.work:work-runtime:2.4.0-beta01 وandroidx.work:work-runtime-ktx:2.4.0-beta01 وandroidx.work:work-rxjava2:2.4.0-beta01 وandroidx.work:work-testing:2.4.0-beta01. يحتوي الإصدار 2.4.0-beta01 على هذه المراجعات.

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

  • تم إصلاح خلل يؤدي إلى عدم إيقاف ForegroundService بعد انقطاع Worker في المقدّمة. (b/155579898، aosp/1302153)
  • إصلاح خطأ يحاول فيه WorkManager تنفيذ عدّة نُسخ من Worker مرتبطة بخدمة تعمل في المقدّمة (b/156310133 وaosp/1309853)
  • إتاحة إضافة مصانع بشكل ديناميكي لتفويضها عند استخدام DelegatingWorkerFactory (b/156289105، aosp/1309745)
  • مواءمة تتبُّع قيود BATTERY_NOT_LOW بشكلٍ أوثق مع المنصة (aosp/1312583)

الإصدار 2.4.0-alpha03

29 نيسان (أبريل) 2020

تم تحرير androidx.work:work-*:2.4.0-alpha03. يحتوي الإصدار 2.4.0-alpha03 على هذه المراجعات.

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

  • يتيح WorkManager الآن استخدام RxJava 3. لاستخدام RxJava 3، يجب تضمين التبعية التالية: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • تمت إضافة قاعدة جديدة لفحص الأخطاء تضمن أنّ ListenableWorkerعمليات التنفيذ أصبحت الآن public عند استخدام WorkerFactory التلقائي. (aosp/1291262)

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

  • سيؤدي الآن استدعاء setProgressAsync() بعد انتهاء تنفيذ ListenableWorker إلى إرسال إشارة Exception عبر ListenableFuture. (aosp/1285494)
  • تم وضع علامة final على WorkQuery.Builder. (aosp/1275037)
  • تمت إعادة تسمية طرق المصنع WorkQuery.Builder withStates وwithTags وwithUniqueWorkNames إلى fromStates وfromTags وfromUniqueWorkNames على التوالي. (aosp/1280287)

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

  • تجاهل SecurityException عند تتبُّع حالة الشبكة لجهاز معيّن (b/153246136، aosp/1280813)

الإصدار 2.4.0-alpha02

1 نيسان (أبريل) 2020

تم تحرير androidx.work:work-*:2.4.0-alpha02. يحتوي الإصدار 2.4.0-alpha02 على هذه المراجعات.

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

  • تمت إضافة قاعدة Lint جديدة تُرسل تنبيهًا عندما تتطلّب WorkRequest كلاً من Constraints.setRequiresCharging(...) وConstraints.setRequiresDeviceIdle(...). لا يتم شحن بعض الأجهزة مطلقًا ولا تكون في وضع السكون في الوقت نفسه. وبالتالي، سيتم تنفيذ هذه الطلبات بمعدل أقل من المتوقع. (aosp/1253840)

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

  • تمت إضافة إمكانية البحث عن WorkInfo باستخدام WorkQuery. يكون ذلك مفيدًا عندما يريد المطوّرون البحث عن WorkInfo حسب مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع على WorkQuery.Builder withStates(...) أو WorkQuery.Builder withTags(...) أو WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230، b/143847546)

  • إنّ المكالمات التي يتم إجراؤها إلى setForegroundAsync() والتي لا تكتمل قبل اكتمال ListenableWorker سيتم الآن الإشارة إليها من خلال IllegalStateException في ListenableFuture المعروض. (aosp/1262743)

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

  • تم إصلاح قاعدة التدقيق التي تتحقّق من أوقات الفواصل الزمنية غير الصالحة لعناصر PeriodicWorkRequest. (aosp/1254846، b/152606442)

الإصدار 2.4.0-alpha01

4 آذار (مارس) 2020

تم تحرير androidx.work:work-*:2.4.0-alpha01. يحتوي الإصدار 2.4.0-alpha01 على هذه المراجعات.

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

  • أصبح جدولة العمليات في WorkManager أكثر كفاءة. في السابق، كان "جدول التشغيل" الجاري النظر فيه لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتأخّر وتم استيفاء قيوده. يتتبّع جدول التشغيل أثناء العملية WorkRequest التي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequest. لا يلتزم "جدول التشغيل" الجاري أيضًا بحدود الجدولة (ولكنه لا يزال مقتصرًا على حجم Executor الذي يستخدمه WorkManager). وهذا يعني أنّه يمكن للتطبيق الآن تنفيذ المزيد من WorkRequest عندما يكون في المقدّمة. (aosp/1185778)

  • تمت إضافة إمكانية طلب معلومات التشخيص من WorkManager باستخدام adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". يوفّر ذلك الكثير من المعلومات المفيدة، بما في ذلك:

    • طلبات العمل التي اكتملت في آخر 24 ساعة
    • طلبات العمل التي يتم تنفيذها حاليًا
    • طلبات العمل المجدوَلة (aosp/1235501)
  • قواعد Lint الجديدة التي تفرض ما يلي:

    • استخدام foregroundServiceType المناسب عند استخدام واجهات برمجة تطبيقات setForegroundAsync() (b/147873061، aosp/1215915)
    • تحديد أرقام تعريف JobScheduler التي يجب أن يستخدمها WorkManager عند استخدام واجهات برمجة تطبيقات JobService مباشرةً (aosp/1223567)

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

  • أضِف ExistingWorkPolicy.APPEND_OR_REPLACE الذي يشبه APPEND، ولكنّه يحلّ محلّ سلسلة تم إلغاء المتطلبات الأساسية لها أو تعذّر إكمالها. (b/134613984، aosp/1199640)

  • توفير إمكانية إضافة RunnableScheduler مخصّصة لتتبُّع WorkRequest التي يجب تنفيذها في المستقبل يستخدمه "جدول التشغيل" أثناء عملية التنفيذ. (aosp/1203944)

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

  • تم إيقاف setProgress() نهائيًا في RxWorker لأنّه كان يعرض في السابق Single<Void> وهو نوع غير ممكن. تمت إضافة واجهة برمجة تطبيقات جديدة setCompletableProgress() تعرض Completable بدلاً من ذلك، كما تمت إضافة قواعد Lint جديدة تساعد في نقل البيانات إلى واجهات برمجة التطبيقات الجديدة. (b/150080946، aosp/1242665)

الإصدار 2.3.4

الإصدار 2.3.4

18 آذار (مارس) 2020

تم تحرير androidx.work:work-*:2.3.4. يحتوي الإصدار 2.3.4 على هذه المراجعات.

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

  • تم إصلاح خطأ كان يؤدي إلى تشغيل عمليات متعددة من Worker التي تستغرق وقتًا طويلاً، بعد تجاوز فترة التنفيذ التي تبلغ 10 دقائق. (aosp/1247484، b/150553353)
  • حلّ مشكلة lint في WorkManagerIssueRegistry نشكرك @ZacSweers من Slack على مساهمتك. (aosp/1217923)

الإصدار 2.3.3

الإصدار 2.3.3

4 آذار (مارس) 2020

تم تحرير androidx.work:work-*:2.3.3. يحتوي الإصدار 2.3.3 على هذه المراجعات.

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

  • تم إصلاح خطأ كان يؤدي إلى عدم إعادة جدولة Worker بشكل صحيح في حال انقطاعها. (b/150325687، aosp/1246571)

الإصدار 2.3.2

الإصدار 2.3.2

19 شباط (فبراير) 2020

تم تحرير androidx.work:work-*:2.3.2. يحتوي الإصدار 2.3.2 على هذه المراجعات.

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

  • إصلاح مشكلة تجاوز WorkManager الحد الأقصى البالغ 100 وظيفة في JobScheduler في حالات نادرة (aosp/1226859، b/149092520)
  • إصلاح مشكلة تعارض في ConstraintControllers (aosp/1220100)
  • تم تحسين دورة حياة الخدمة التي تعمل في المقدّمة لإدارة "العمال" الذين يعملون لفترة طويلة. (aosp/1226295)
  • تم تحسين إدارة إلغاء الإشعارات للعمال الذين يستغرقون وقتًا طويلاً عند إلغاء العامل. (aosp/1228346)

الإصدار 2.3.1

الإصدار 2.3.1

5 شباط (فبراير) 2020

تم تحرير androidx.work:work-*:2.3.1. يحتوي الإصدار 2.3.1 على هذه المراجعات.

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

  • إدارة دورة حياة Notification بشكل أفضل لعمليات Worker التي تستغرق وقتًا طويلاً والتي يتم تشغيلها عندما يكون Service نشطًا في المقدّمة (aosp/1218539، b/147249312)
  • يعتمد الإصدار WorkManager الآن على الإصدار الثابت androidx.sqlite:sqlite-framework:2.1.0. (aosp/1217729)
  • تمت إضافة قواعد فحص الأخطاء لضمان تحديد foregroundServiceType في AndroidManifest.xml عند استخدام foregroundServiceType في ForegroundInfo. (aosp/1214207، b/147873061)

الإصدار 2.3.0

الإصدار 2.3.0

22 كانون الثاني (يناير) 2020

تم إصدار الإصدار androidx.work:work-*:2.3.0 بدون أي تغييرات منذ 2.3.0-rc01. يحتوي الإصدار 2.3.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 2.2.0

  • إتاحة العمل المطوّل أو المهم من خلال ListenableWorker#setForegroundAsync()
  • إتاحة إمكانية الاطّلاع على مستوى تقدّم العمال عبر ListenableWorker#setProgressAsync()
  • يُحزم WorkManager الآن قواعد lint إضافية كجزء من المكتبة التي تساعد في رصد الأخطاء في وقت مبكر.

الإصدار 2.3.0-rc01

8 كانون الثاني (يناير) 2020

تم تحرير androidx.work:work-*:2.3.0-rc01. يحتوي الإصدار 2.3.0-rc01 على هذه المراجعات.

هذا الإصدار مطابق لـ 2.3.0-beta02.

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

  • يحدِّد العنصر work-testing الآن تبعية api على work-runtime-ktx. (aosp/1194410)

الإصدار 2.3.0-beta02

18 كانون الأول (ديسمبر) 2019

تم تحرير androidx.work:work-*:2.3.0-beta02. يحتوي الإصدار 2.3.0-beta02 على هذه المراجعات.

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

  • تمت إضافة رسالة خطأ أفضل لاستثناءات SQLite غير القابلة للاسترداد. (aosp/1185777)
  • تمت إضافة قاعدة lint تضمن إزالة مقدّم المحتوى androidx.work.impl.WorkManagerInitializer من AndroidManifest.xml عند استخدام ميزة "الإعداد عند الطلب". (aosp/1167007)
  • تمت إضافة تحذير أخطاء نحوية عند استخدام enqueue() لإنشاء PeriodicWorkRequest بدلاً من enqueueUniquePeriodicWork(). (aosp/1166032)

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

  • يتطلب منك الآن ForegroundInfo تحديد notificationId المطلوب استخدامه عند استخدام ListenableWorker.setForegroundAsync(). هذا تغيير جذري. يتيح لك ذلك تشغيل عدّة Worker تستغرق وقتًا طويلاً في الوقت نفسه. تدير WorkManager أيضًا أوقات حياة Notification المقدَّمة بشكلٍ أفضل. (b/145473554 وaosp/1181208 وasop/1181216 وasop/1183577)

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

  • تم إصلاح خلل في تنفيذ AlarmManager حيث لم يتم تنظيف الإنذارات بشكل صحيح. (aosp/1156444)
  • تم إصلاح خطأ كان يؤدي إلى إنشاء سلسلة WorkContinuation غير صحيحة عند استخدام قائمة فارغة من WorkRequest. (b/142835274، aosp/1157051)

تغييرات التبعية

  • يستخدم WorkManager الآن الإصدار 2.2.2 من Room.

الإصدار 2.3.0-beta01

20 تشرين الثاني (نوفمبر) 2019

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

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

  • تمت إضافة قاعدة 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)
  • تم الآن تحسين toString() في Data ليصبح أكثر فائدة. (b/140945323)
  • توفّر Data الآن طريقة equals() أفضل. وتتيح أيضًا استخدام deepEquals لأنواع Array. (b/140922528)
  • يخزِّن WorkManager الآن قاعدة بياناته الداخلية وملفات الإعدادات المفضّلة في دليل لا يتضمّن أي نُسخ احتياطية. (b/114808216)

الإصدار 2.3.0-alpha01

22 آب (أغسطس) 2019

تم تحرير androidx.work:work-*:2.3.September 5, 20190-alpha01. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • يمكن الآن لتطبيقات ListenableWorker ضبط مستوى التقدّم من خلال واجهة برمجة التطبيقات setProgressAsync(). تمت أيضًا إضافة واجهة برمجة تطبيقات setProgress-ing setProgress المقابلة في CoroutineWorker وsetProgress في RxWorker التي تعرض Single<Void>.suspend باستخدام واجهات برمجة التطبيقات الجديدة هذه، يمكن للعاملين نقل معلومات التقدّم عبر WorkInfo التي تتضمّن واجهة برمجة تطبيقات getProgress مقابلة. (b/79481554)
  • تتوفّر Data واجهة برمجة تطبيقات containsKey() يمكن استخدامها للتحقّق من أنّ بيانات الإدخال في Worker تحتوي على مفاتيح بالنوع المتوقّع. (b/117136838)
  • يمكن الآن تسلسل Data باستخدام Data.toByteArray() وData.fromByteArray(). يُرجى العِلم أنّه ما مِن ضمانات متعلّقة بالإصدارات في Data، لذا يجب عدم الاحتفاظ بها أو استخدامها للتواصل بين التطبيقات. ولا يمكن استخدامها إلا بين عمليات متعددة للتطبيق نفسه.
  • تمت إضافة إمكانية تحديد InputMergerFactory من خلال Configuration.setInputMergerFactory. (b/133273159)

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

  • سيُلقي WorkManager مثيلًا من IllegalStateException إذا أرجع WorkerFactory مثيلًا من ListenableWorker سبق أن تمّ استدعاؤه. (b/139554406)
  • تعديلات على المستندات حول إلغاء ListenableFuture وإعادة الاتصال onStopped() في ListenableWorker (b/138413671)

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

  • يتجاهل "جدول التشغيل" الجاري الآن WorkRequest التي تتضمّن قيد idle. لا تتلقّى خدمة JobScheduler هذه الطلبات الآن إلا عندما يكون الجهاز idle. (aosp/1089779)
  • يستخدم TestScheduler الآن Executor المحدّد بشكل صحيح لمسؤول تنفيذ المهام الداخلي في الاختبارات. (aosp/1090749)

الإصدار 2.2.0

الإصدار 2.2.0

15 آب (أغسطس) 2019

تم تحرير androidx.work:work-*:2.2.0. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

هذا الإصدار مطابق للإصدار androidx.work:work-*:2.2.0-rc01.

التغييرات المهمة في الإصدار 2.2.0 مقارنةً بالإصدار 2.1.0

androidx.work:work-gcm:2.2.0 هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كجدول زمني عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات التي تقل عن أو تساوي 22. هذه تبعية اختيارية تساعد في معالجة الخلفية بشكل أكثر موثوقية وكفاءة على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذا العنصر التابع إلى ملف gradle للحصول تلقائيًا على دعم GCMNetworkManager. في حال عدم توفّر "خدمات Play"، سيستمر WorkManager في استخدام AlarmManager على الأجهزة القديمة.

الإصدار 2.2.0-rc01

30 تموز (يوليو) 2019

تم تحرير androidx.work:work-*:2.2.0-rc01. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • تم إصلاح خلل في تنفيذ AlarmManager كان يؤدي إلى إيقاف الخدمة قبل الأوان، ما يؤدي إلى ظهور خطأ RejectedExecutionException في حالات نادرة. (aosp/1092374) (b/138238197).
  • تمت إضافة حل بديل لمشكلة NullPointerException عند استخدام واجهات برمجة تطبيقات JobScheduler على بعض الأجهزة. (aosp/1091020) (b/138364061)، (b/138441699)

الإصدار 2.2.0-beta02

19 تموز (يوليو) 2019

تم تحرير androidx.work:work-*:2.2.0-beta02. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • تمت إزالة الاعتماد غير المقصود على jacoco الذي تم تقديمه في الإصدار 2.2.0-beta01.

الإصدار 2.2.0-beta01

17 تموز (يوليو) 2019

تم تحرير androidx.work:work-*:2.2.0-beta01. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • androidx.work:work-gcm:2.2.0-beta01 هو عنصر Maven جديد يتيح استخدام GCMNetworkManager كجدول زمني عندما تكون "خدمات Google Play" متاحة لمستويات واجهة برمجة التطبيقات التي تقل عن أو تساوي 22. هذه تبعية اختيارية تساعد في معالجة الخلفية بشكل أكثر موثوقية وكفاءة على إصدارات واجهة برمجة التطبيقات القديمة. إذا كان تطبيقك يستخدم "خدمات Google Play"، أضِف هذا العنصر التابع إلى ملف gradle للحصول تلقائيًا على دعم GCMNetworkManager. في حال عدم توفّر "خدمات Play"، سيستمر WorkManager في الرجوع إلى AlarmManager على الأجهزة القديمة.

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

  • إصلاح مشكلة IllegalArgumentException عند تتبُّع حالة الشبكة على أجهزة Nvidia Shield K1 اللوحية (aosp/1010188)

الإصدار 2.1.0

الإصدار 2.1.0

11 تموز (يوليو) 2019

تم تحرير androidx.work:work-*:2.1.0. هذا الإصدار مطابق للإصدار androidx.work:work-*:2.1.0-rc01.

التغييرات المهمة منذ الإصدار 2.0.1

  • يتطلّب تطبيق work-runtime-ktx الآن استخدام Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلى build.gradle: kotlinOptions { jvmTarget = "1.8" }
  • تمت إضافة عملية إعداد عند الطلب لخدمة WorkManager، والتي ستنشئ WorkManager فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
    1. أوقِف أداة الإعداد التلقائي.
    2. نفِّذ Configuration.Provider على عنصر Application المخصّص.
    3. غيِّر كل الإشارات إلى WorkManager.getInstance() إلى WorkManager.getInstance(Context). وكجزء من هذا التغيير، تم إيقاف WorkManager.getInstance() نهائيًا. من الأفضل دائمًا الاتصال بالشركة التي تم شراء جهاز WorkManager.getInstance(Context) البديل منها، حتى إذا لم تكن بصدد تنفيذ عملية بدء التشغيل عند الطلب.
  • تتيح PeriodicWorkRequest الآن تأخيرات الدفع الأولية. يمكنك استخدام setInitialDelay في PeriodicWorkRequest.Builder لضبط مهلة PeriodicWorkRequest.Builder أولية. b/111404867
  • تمت إضافة إمكانية تفويض WorkerFactory مسجّلة واحدة أو أكثر باستخدام DelegatingWorkerFactory. b/131435993
  • تمت إضافة إمكانية تخصيص Executor المستخدَمة من قِبل WorkManager للقيام بجميع عمليات حفظ السجلات الداخلية من خلال Configuration.Builder.setTaskExecutor.
  • تمت إضافة إمكانية إنشاء فئات Worker وListenableWorker قابلة للاختبار على مستوى الوحدة باستخدام TestWorkerBuilder وTestListenableWorkerBuilder في أثر work-testing.
    • يُرجى العِلم أنّ work-testing يستخدِم الآن Kotlin كتبعية ويضمّ عدة إضافات Kotlin تلقائيًا.
  • تمت إضافة عدد محاولات التشغيل إلى WorkInfo. b/127290461
  • يمكن الآن لأنواع Data تخزين وعرض وحدات البايت ومصفوفات وحدات البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصر Data.
  • يعتمد WorkManager الآن على Room 2.1.0، ما من شأنه حلّ بعض مشاكل قاعدة البيانات.

الإصدار 2.1.0-rc01

27 حزيران (يونيو) 2019

تم تحرير androidx.work:work-*:2.1.0-rc01. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • تم إصلاح خطأ كان يؤدي إلى تعطُّل التطبيق عند تنفيذ المهام باستخدام JobScheduler أثناء إجراء عملية احتياطية b/135858602.

الإصدار 2.1.0-beta02

20 حزيران (يونيو) 2019

تم تحرير androidx.work:work-*:2.1.0-beta02. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • يستخدم TestListenableWorkerBuilder الآن WorkerFactory الصحيح عند إنشاء نُسخ من ListenableWorker. b/135275844
  • تم إصلاح خطأ كان يتسبب في حدوث انحرافات في فترات تنفيذ WorkRequest بسبب إنهاء العملية. b/135272196

الإصدار 2.1.0-beta01

13 حزيران (يونيو) 2019

تم تحرير androidx.work:work-*:2.1.0-beta01. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • يعتمد WorkManager الآن على Room 2.1.0، ما من شأنه حلّ بعض مشاكل قاعدة البيانات.
  • تمت إزالة بعض عمليات إدخال/إخراج القرص في عملية بدء التشغيل على سلسلة التعليمات الرئيسية.
  • تم إصلاح مشكلة احتمالية حدوث "توقّف عمليات متعددة في انتظار الحصول على الموارد نفسها" في تتبُّع القيود. b/134361006
  • تم إلغاء مهام غير صالحة مُسبَقًا منسوبة إلى WorkManager. b/134058261
  • تمت إضافة بعض طلبات الحظر إلى واجهات برمجة التطبيقات JobScheduler للأجهزة التي تُظهر سلوكًا غير مرغوب فيه.

الإصدار 2.1.0-alpha03

5 حزيران (يونيو) 2019

تم تحرير androidx.work:*:2.1.0-alpha03.

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

  • مستندات محسّنة لتطبيقات PeriodicWorkRequest
  • يستخدم WorkManagerTestInitHelper الآن أداة تنفيذ الخلفية الصحيحة للاختبارات.
  • إصلاحات لمشاكل SQLite عند التعامل مع المعاملات الكبيرة على بعض الأجهزة (b/130182503)
  • أصبحت الآن تبعيات WorkManager أكثر دقة. (b/133169148).
  • حلّ المشاكل المتعلّقة بمصنعي الأجهزة الأصليين في تنفيذ JobScheduler عند جدولة المهام باستخدام WorkManager
  • تحسينات في أداة جدولة AlarmManager المتعلّقة بمدّة خدمة التطبيقات التي كانت تتسبّب في حدوث أعطال نادرة في السابق (b/133313734)

الإصدار 2.1.0-alpha02

16 أيار (مايو) 2019

تم طرح الإصدار WorkManager 2.1.0-alpha02. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة.

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

  • تتيح PeriodicWorkRequest الآن تأخيرات الدفع الأولية. يمكنك استخدام setInitialDelay في PeriodicWorkRequest.Builder لضبط مهلة PeriodicWorkRequest.Builder أولية. b/111404867

  • تمت إضافة إمكانية تفويض WorkerFactory مسجّلة واحدة أو أكثر باستخدام DelegatingWorkerFactory. b/131435993

  • تمت إضافة إمكانية تخصيص Executor المستخدَمة من قِبل WorkManager للقيام بجميع عمليات حفظ السجلات الداخلية من خلال Configuration.Builder.setTaskExecutor.

  • تم تحسين المستندات حول WorkRequest.keepResultsForAtLeast (b/130638001) وعملية الإعداد عند الطلب وPeriodicWorkRequest.Builder (b/131711394).

الإصدار 2.1.0-alpha01

24 نيسان (أبريل) 2019

تم طرح الإصدار WorkManager 2.1.0-alpha01. يحتوي هذا الإصدار على العديد من واجهات برمجة التطبيقات الجديدة. يُرجى العِلم أنّه اعتبارًا من هذا الإصدار، ستتوفّر ميزات جديدة لن يتم نقلها إلى الإصدار 1.x. ننصحك بالتبديل إلى الإصدار 2.x.

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

  • تمت إضافة عملية إعداد عند الطلب لخدمة WorkManager، والتي ستنشئ WorkManager فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
    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

تم طرح الإصدار 2.0.1 من WorkManager. هذا الإصدار مطابق لإصدار 2.0.1-rc01.

الإصدار 2.0.1-rc01

3 نيسان (أبريل) 2019

تم إصدار الإصدار WorkManager 2.0.1-rc01. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء. بالنسبة إلى مستخدمي الإصدار 1.x القديم، تظهر بعض هذه التغييرات أيضًا في الإصدار 1.0.1-rc01.

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

  • تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
  • تم إصلاح عطل في حالة استخدام متطرفة بسبب عدم تنظيف تتبُّع القيود في واجهات برمجة تطبيقات JobScheduler السابقة. b/129226383
  • تم إصلاح StackOverflowError في ما يتعلّق بالسلاسل الطويلة من الأعمال. b/129091233
  • تم تعديل مستندات PeriodicWorkRequest للإشارة إلى أنّ وقت المرونة غير متوافق مع الإصدار 23 من واجهة برمجة التطبيقات.
  • تم إصلاح بعض الروابط المعطّلة في مستندات Kotlin.

الإصدار 2.0.0

الإصدار 2.0.0

20 آذار (مارس) 2019

تم طرح الإصدار 2.0.0 من WorkManager. هذا الإصدار مطابق للإصدار 2.0.0-rc01 وهو إصدار AndroidX من الإصدار 1.0.0 الثابت مع تبعيات AndroidX. ننصحك باستهداف هذا الإصدار بدلاً من الإصدارات القديمة من 1.x. سيستهدف كل التطوير النشط الإصدار 2.x ولن يتلقّى الإصدار 1.x سوى إصلاحات الأخطاء الملحّة لفترة محدودة.

الإصدار 2.0.0-rc01

7 آذار (مارس) 2019

تم إصدار الإصدار WorkManager 2.0.0-rc01. هذا الإصدار مطابق للإصدار الثابت 1.0.0 ولكنه يحتوي على تبعيات AndroidX. بعد أن يصبح الإصدار 2.0.0 ثابتًا، يجب تضمين هذا الإصدار ولن تتلقّى الإصدارات القديمة من 1.x سوى بعض إصلاحات الأخطاء الحرجة. وستستهدف جميع عمليات التطوير النشطة الإصدار 2.x.

التبعيات التي تم إنشاؤها قبل AndroidX

للحصول على معلومات عن استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات KTX.
المستندات المرجعية: Java

رائع

dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Kotlin

dependencies {
    val work_version = "1.0.1"

    // (Java only)
    implementation("android.arch.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("android.arch.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("android.arch.work:work-rxjava2:$work_version")

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

الإصدار 1.0.1

الإصدار 1.0.1

9 نيسان (أبريل) 2019

تم طرح الإصدار 1.0.1 من WorkManager. هذا الإصدار مطابق لإصدار 1.0.1-rc01.

يُرجى العِلم أنّنا ننصح بشدّة المستخدمين بالتحديث إلى الإصدار 2.x من WorkManager، لأنّه لن يكون هناك سوى عدد قليل جدًا من التحديثات لفرع الإصدار 1.x من الآن فصاعدًا. لن يتم أيضًا طرح واجهات برمجة التطبيقات الجديدة لإصدار المكتبة 1.x.

الإصدار 1.0.1-rc01

2 نيسان (أبريل) 2019

تم إصدار الإصدار WorkManager 1.0.1-rc01. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.

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

  • تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
  • تم إصلاح عطل في حالة استخدام متطرفة بسبب عدم تنظيف تتبُّع القيود في واجهات برمجة تطبيقات JobScheduler السابقة. b/129226383
  • تم إصلاح StackOverflowError في ما يتعلّق بمعالجة سلاسل العمل الطويلة. b/129091233

الإصدار 1.0.0

الإصدار 1.0.0

5 آذار (مارس) 2019

هذا هو الإصدار الثابت 1.0.0 من WorkManager. هذا الإصدار من WorkManager هو مطابق للإصدار 1.0.0-rc02.

الإصدار 1.0.0-rc02

21 شباط (فبراير) 2019

هذا هو الإصدار الثاني من الإصدار التجريبي للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحَين للأخطاء.

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

  • يتم الآن جدولة عمليات Worker بشكل صحيح بعد تعطُّل التطبيق. b/124546316

  • إنّ Worker التي تُظهر Exception غير محدَّد يتم تمييزها الآن بشكل صحيح على أنّها FAILED ولم تعُد تؤدي إلى تعطُّل عملية التطبيق.

الإصدار 1.0.0-rc01

14 شباط (فبراير) 2019

هذا إصدار مرشح للإصدار الثابت 1.0.0 من WorkManager. يتضمّن هذا الإصدار إصلاحًا واحدًا للخطأ.

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

  • يراعي التنفيذ المستنِد إلى AlarmManager الآن بشكل صحيح flex فترات الانتظار لطلبات PeriodicWorkRequests. b/124274584

الإصدار 1.0.0-beta05

6 شباط (فبراير) 2019

يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.

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

  • تم إصلاح مشكلة في استخدام JobScheduler.getPendingJob(...) في واجهة برمجة التطبيقات 23. b/123893059
  • تم إصلاح NullPointerException على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 لواجهة برمجة التطبيقات) أو إصدارات أقدم. b/123835104

الإصدار 1.0.0-beta04

4 شباط (فبراير) 2019

يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.

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

  • تحسين جدولة PeriodicWork لتنفيذ AlarmManager المستنِد
  • تم إصلاح حالة تعذّر فيها على WorkManager تتبُّع القيود بشكل صحيح عند استخدام التنفيذ المستنِد إلى AlarmManager. b/123379508
  • تم إصلاح مشكلة تعذّر فيها على WorkManager إعادة محاولة العمل عند انتهاء عملية عند استخدام التنفيذ المستنِد إلى AlarmManager. b/123329850
  • تم إصلاح مشكلة كانت تؤدي إلى تسرُّب عمليات قفل التنشيط في WorkManager عند استخدام التنفيذ المستنِد إلى AlarmManager.

الإصدار 1.0.0-beta03

25 كانون الثاني (يناير) 2019

يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.

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

  • لقد أجرينا تحديثًا 1.0.0-beta02 كان يتسبب في عدم تنفيذ العمل بشكل صحيح في بعض الحالات. b/123211993
  • تم إصلاح مشكلة عدم التزام العمل بتوقيت الانتظار بشكل صحيح. b/122881597
  • تم إصلاح ConcurrentModificationException على الأجهزة التي تعمل بنظام التشغيل 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 على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو إصدارات أقدم. b/121345393
  • تم إصلاح تنفيذ العمل بشكلٍ خاطئ عند عدم استيفاء القيود على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو إصدارًا أقدم. b/122578012
  • تحسين معالجة إكمال العمل ليكون أسرع في بعض الحالات القصوى b/122358129
  • تم إجراء تغيير لمعالجة حالات السباق المحتمَلة بين عمليات متعددة من LiveData يستخدمها WorkManager.
  • تم نقل استخدام الإصدار Room من التبعية 1.1.1 بدلاً من الإصدار 1.1.1-rc01، لأنّ هذين الإصدارين متطابقان. b/122578011

الإصدار 1.0.0-beta01

19 كانون الأول (ديسمبر) 2018

لا يحتوي هذا الإصدار على أي تغييرات في واجهة برمجة التطبيقات، ومن المفترض أن تظل واجهة برمجة التطبيقات في WorkManager ثابتة من الآن فصاعدًا إلى أن يصل الإصدار التالي ما لم تحدث مشكلة خطيرة. يتضمّن هذا الإصدار بعض الإصلاحات للأخطاء.

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

  • لن يتمّ تشغيل حسابات الأطفال التي تم إلغاؤها سابقًا والتي تمّ إكمال عمل الوالدَين فيها بنجاح. b/120811767
  • فئات التسجيل التي تم إعدادها بشكل صحيح (تظهر بشكل أساسي أثناء الاختبارات)

الإصدار 1.0.0-alpha13

12 كانون الأول (ديسمبر) 2018

يتضمّن هذا الإصدار تغييرًا بسيطًا في واجهة برمجة التطبيقات سيكون مفيدًا لبعض مستخدمي Kotlin.

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

  • تم نقل androidx.work.Result لتكون فئة داخلية من ListenableWorker. ويمنع ذلك تعارضات إعادة التشكيل مع فئة Result في المستوى الأعلى من Kotlin. هذا تغيير جذري في واجهة برمجة التطبيقات. b/120564418

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

  • تم نقل androidx.work.Result لتكون فئة داخلية من ListenableWorker.

الإصدار 1.0.0-alpha12

5 كانون الأول (ديسمبر) 2018

يتضمّن هذا الإصدار بعض التغييرات الأساسية في واجهة برمجة التطبيقات، يُرجى الاطّلاع على قسم التغييرات الأساسية في واجهة برمجة التطبيقات أدناه. من المرجّح أن يتم إصدار هذا الإصدار كأول إصدار تجريبي. يحتوي alpha12 أيضًا على تعديلات شاملة على المستندات.

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

  • يقدّم العنصر الجديد work-rxjava2 RxWorker. هذا ListenableWorker يتوقع Single<Payload>.
  • تمّت إزالة التوافق مع Firebase JobDispatcher بسبب الإيقاف النهائي المُرتقب له. وهذا يعني أنّه لن يتم تعديل العنصر work-firebase بعد الآن مع بدء استخدام الإصدار التجريبي. وسننظر في إضافة بديل في المستقبل.
  • تم دمج Payload في Result. أصبحت Result الآن "فئة مختومة" تتضمّن ثلاثة عمليات تنفيذ محدّدة يمكنك الحصول عليها من خلال Result.success() (أو Result.success(Data)) وResult.failure() (أو Result.failure(Data)) وResult.retry(). تظهر الآن ListenableFuture بقيمة Result بدلاً من Payload. لا تتضمّن Worker طرق الحصول على البيانات وضبطها للإخراج Data. هذا تغيير جذري.
  • تمت إضافة Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) وأنواعها لتوفير دعم أفضل لعناوين URL للمحتوى التي يتم تشغيلها ببطء. b/119919774
  • تمت إضافة السعر المتغير WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). تتطلّب هذه الطريقة استخدام الإصدار 26 من واجهة برمجة التطبيقات.
  • تمت إضافة طريقتَي إضافة Operation.await() وListenableFuture.await() في Kotlin.
  • تمت إعادة تسمية Operation.getException() إلى Operation.getThrowable(). هذا تغيير جذري.
  • لم تعُد فئة ContentUriTriggers والأساليب التي تشير إليها متاحة للاستخدام العام. هذا تغيير جذري.
  • تمت إزالة بقية طرق varargs في WorkManager وWorkContinuation وOneTimeWorkRequest لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في عملية الإنشاء، يمكنك لفّ متغيرات varargs الحالية بـ Arrays.asList(...). ما زلنا نُدرِج إصدارات ذات مَعلمة واحدة لكل طريقة. هذا تغيير جذري.
  • تمت إزالة WorkContinuation.combine(OneTimeWorkRequest, *) سعر متغير. كانت واجهة برمجة التطبيقات التي كانت تقدّمها مربكة، وطرق combine الحالية أكثر وضوحًا. هذا تغيير جذري.

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

  • أصبحت عمليات التنفيذ التي تم إجراؤها قبل الإصدار 6 من نظام التشغيل Android أكثر موثوقية في استرداد العملية بعد تعذُّر تنفيذ مهمة كانت قيد التنفيذ.
  • يتم تتبُّع LiveData الذي يتم رصده من خلال observeForever من خلال WorkManager. هذه ميزة تم نقلها من إصدار سابق لإصلاح مكتبة Room. b/74477406
  • تُعرِض Data.Builder.build() الآن استثناءً إذا تجاوز العنصر التسلسلي الحد الأقصى لحجمه. في السابق، كان هذا يحدث فقط في سلسلة مهام في الخلفية لا يمكنك التعامل معها بشكل صحيح.
  • التمييز بشكل أكبر بين العمل المتوقف عن العمل والملغى: سيعرض getWorkInfoById() WorkInfo مع CANCELLED State خلال ListenableWorker.onStopped().
  • التعامل مع null Result كأخطاء في ListenableWorker b/120362353
  • حلّ افتراضي لأجهزة Shield Tablets التي تعمل بواجهة برمجة التطبيقات 24 والتي تُظهر أحيانًا الخطأ IllegalArgumentException b/119484416

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

  • تمّت إزالة التوافق مع Firebase JobDispatcher بسبب الإيقاف النهائي المُرتقب له. وهذا يعني أنّه لن يتم تعديل العنصر work-firebase بعد الآن مع بدء استخدام الإصدار التجريبي. وسننظر في إضافة بديل في المستقبل.
  • تم دمج Payload في Result. أصبحت Result الآن "فئة مختومة" تتضمّن ثلاثة عمليات تنفيذ محدّدة يمكنك الحصول عليها من خلال Result.success() (أو Result.success(Data)) وResult.failure() (أو Result.failure(Data)) وResult.retry(). تظهر الآن ListenableFuture بقيمة Result بدلاً من Payload. لا تتضمّن Worker طرق الحصول على البيانات وضبطها للإخراج Data.
  • تمت إضافة طريقتَي إضافة Operation.await() وListenableFuture.await() في Kotlin.
  • تمت إعادة تسمية Operation.getException() إلى Operation.getThrowable().
  • لم تعُد فئة ContentUriTriggers والأساليب التي تشير إليها متاحة للاستخدام العام.
  • تمت إزالة بقية طرق varargs في WorkManager وWorkContinuation وOneTimeWorkRequest لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في عملية الإنشاء، يمكنك إحاطة متغيرات varargs الحالية بـ Arrays.asList(...). ما زلنا نُدرِج إصدارات ذات مَعلمة واحدة لكل طريقة.
  • تمت إزالة WorkContinuation.combine(OneTimeWorkRequest, *) سعر متغير. كانت واجهة برمجة التطبيقات التي كانت تقدّمها مربكة، وطرق combine الحالية أكثر وضوحًا.

الإصدار 1.0.0-alpha11

8 تشرين الثاني (نوفمبر) 2018

يحتوي هذا الإصدار على العديد من التغييرات التي ستصبح واجهة برمجة تطبيقات ثابتة في beta. تم إجراء تغييرات جذرية على واجهة برمجة التطبيقات في هذا الإصدار، يُرجى الاطّلاع على قسم التغييرات الجذرية على واجهة برمجة التطبيقات أدناه.

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

  • work-runtime-ktx تقدّم CoroutineWorker جديدًا.
  • تمت إعادة تسمية WorkStatus إلى WorkInfo. تمت إعادة تسمية جميع صِيَغ طريقة getStatus المقابلة لصِيَغ getWorkInfo المقابلة. هذا تغيير جذري.
  • لم تعُد ListenableWorker.onStopped() تقبل وسيطة منطقية تمثّل ما إذا تم إلغاء WorkRequest. لم تعُد WorkManager تُجري هذا التمييز. هذا تغيير جذري.
  • تمت إعادة تسمية حزمة androidx.work.test إلى حزمة androidx.work.testing. هذا تغيير جذري.
  • لم تعُد وظائف الإعداد في Constraints جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. هذا تغيير جذري.
  • WorkerParameters.getTriggeredContentUris() وWorkerParameters.getTriggeredContentAuthorities() الصفيفان اللذان تم عرضهما سابقًا والآن، تعرض هذه الطرق مجموعات. هذا تغيير جذري.
  • تمت إعادة تسمية ListenableWorker.onStartWork() إلى ListenableWorker.startWork(). هذا تغيير جذري.
  • لم يعُد مُنشئ WorkStatus جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. هذا تغيير جذري.
  • تمت إعادة تسمية Configuration.getMaxJobSchedulerID() وConfiguration.getMinJobSchedulerID() إلى Configuration.getMinJobSchedulerId() وConfiguration.getMaxJobSchedulerId() على التوالي. هذا تغيير جذري.
  • تمت إضافة الكثير من التعليقات التوضيحية @NonNull إلى واجهة برمجة التطبيقات المتاحة للجميع لتحسين سهولة استخدام واجهة برمجة التطبيقات.
  • أضِف واجهة برمجة التطبيقات WorkManager.enqueueUniqueWork() لإضافة 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 العمل 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
  • تم إصلاح مشكلة تحديد موعد مزدوج للإعلانات عند استخدام JobScheduler.PeriodicWorkRequest b/110798652
  • تم إصلاح مشكلة عدم تنفيذ PeriodicWorkRequest بشكل صحيح بعد وضع السكون في الجهاز. b/111469837
  • تم إصلاح مشكلة تأخيرات البداية عند استخدام Firebase JobDispatcher. b/111141023
  • تم إصلاح بعض المشاكل المحتملة في التوقيت وشروط السباق.
  • تمّت إزالة BroadcastReceiver بشكل صحيح والتي لم تعُد مطلوبة.
  • تحسين أداء إعادة الجدولة عند إعادة تشغيل التطبيقات بعد إغلاقها بشكلٍ قسري
  • السماح باستدعاء TestScheduler.setAllConstraintsMet(UUID) قبل أو بعد إضافة WorkRequest المحدّد إلى "قائمة الانتظار" b/111238024

التغييرات التي قد تؤدي إلى حدوث عطل

  • تم الآن إضافة تعليق توضيحي إلى WorkManager.getInstance() باستخدام @NonNull بدلاً من @Nullable.
  • تم تغيير توقيع Data.getString() لكي لا يأخذ قيمة تلقائية بعد الآن (يكون null بشكل ضمني).
  • تم وضع علامة @hide على بعض الطرق التي لا يُسمح باستخدامها إلا للاستخدام الداخلي. ويشمل ذلك Constraints وData.toByteArray() وData.fromByteArray(byte[]).

الإصدار 1.0.0-alpha04

26 حزيران (يونيو) 2018

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

  • تتم الآن إعادة جدولة PeriodicWorkRequest بشكل صحيح عند استخدام التنفيذ المستنِد إلى AlarmManager.
  • تم إصلاح خطأ ANR محتمل عند إعادة جدولة جميع وحدات العمل بعد فرض الإيقاف أو إعادة التشغيل. b/110507716
  • تمت إضافة تعليقات توضيحية حول قابلية العدم إلى واجهات برمجة تطبيقات WorkManager المختلفة. b/110344065
  • تسجيل الاستثناءات التي لم يتم رصدها والتي تحدث أثناء تنفيذ Worker b/109900862
  • السماح بعمليات نقل البيانات المدمرة في حال قررت الرجوع إلى إصدار أقدم من WorkManager‏ b/74633270
  • تم إصلاح مشكلة تعطُّل عملية نقل البيانات في حال إنشاء علامات ضمنية مكرّرة. هذه مشكلة نادرة جدًا لا تحدث إلا إذا استخدمت تنسيق العلامة الضمنية نفسه بنفسك.

الإصدار 1.0.0-alpha03

19 حزيران (يونيو) 2018

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

  • تم إصلاح خطأ تداخل في التنفيذ المستنِد إلى AlarmManager. b/80346526.

  • تم إصلاح مهام النسخ المكرّر عند استخدام JobScheduler بعد إعادة تشغيل الجهاز.

  • أصبحت المهام التي تستخدم عوامل تشغيل معرّفات الموارد المنتظمة (URI) للمحتوى محفوظة بعد عمليات إعادة التشغيل. b/80234744

  • تعديلات على المستندات: b/109827628 وb/109758949 وb/80230748

  • تم إصلاح عطل يحدث عند إعادة إدراج WorkRequest في "قائمة المحتوى التالي". b/109572353.

  • تم إصلاح التحذيرات الصادرة عن "مجمّع لغة Kotlin" عند استخدام التبعية work-runtime-ktx.

  • يستخدم WorkManager الآن الإصدار 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.