WorkManager

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

تحديد التبعيات

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

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

Groovy

dependencies {
    def work_version = "2.10.1"

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

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

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

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

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

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

Kotlin

dependencies {
    val work_version = "2.10.1"

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

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

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

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

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

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

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

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

الملاحظات

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

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

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

الإصدار 2.10

الإصدار 2.10.1

23 نيسان (أبريل) 2025

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

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

  • الحد من احتمالية ظهور TooManyRequestsException من تسجيل WorkManager لـ NetworkCallback المستخدَم لتتبُّع القيود ((b/231499040)[https://issuetracker.google.com/231499040], b309d5).

الإصدار 2.10.0

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

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

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

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

الإصدار 2.10.0-rc01

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

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

الإصدار 2.10.0-beta01

2 أكتوبر 2024

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

الإصدار 2.10.0-alpha04

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

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

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

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

الإصدار 2.10.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 2.10.0-alpha02

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

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

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

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

الإصدار 2.10.0-alpha01

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

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

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

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

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

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

الإصدار 2.9

الإصدار 2.9.1

7 آب (أغسطس) 2024

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

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

  • إصلاح عطل ناتج عن WorkManager محاولة إعادة تشغيل عامل يعمل لفترة طويلة (أي عامل يعمل في المقدّمة) عندما كان نوع العمل الذي يعمل في المقدّمة يحتوي على أذونات متطلّبات Android 14 الأساسية التي تم إبطالها (b/333957914)

الإصدار 2.9.0

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

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

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

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

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

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

الإصدار 2.9.0-rc01

18 تشرين الأول (أكتوبر) 2023

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

  • لم يتم إجراء أي تغييرات منذ الإصدار التجريبي الأخير.

الإصدار 2.9.0-beta01

6 أيلول (سبتمبر) 2023

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

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

الإصدار 2.9.0-alpha02

26 تموز (يوليو) 2023

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

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

  • يوفّر WorkManager الآن تلميحًا عن سبب إيقاف أحد مهام Worker في السابق. يمكن إجراء طلب بحث من العامل نفسه من خلال طريقة getStopReason() أو من WorkInfo من خلال getStopReason().

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

  • تمت إضافة stopReason إلى WorkInfo. يتيح هذا الإجراء stopReason بعد تشغيل العامل. قد يكون ذلك مفيدًا في الإبلاغ عن stopReason بطريقة قابلة للاستخدام، لأنّه بعد إيقاف أحد عمال الجلسة، يمكن إيقاف التطبيق نفسه بسرعة كبيرة. (I21386)
  • السماح بضبط الساعة من خلال الإعدادات واستخدامها لتحديد تسلسل تنفيذ اختبارات Worker (Ic586e)
  • تمت إضافة طريقة getStopReason() إلى ListenableWorker التي تشير إلى سبب إيقاف العامل. (I07060)
  • تمت إضافة WorkManagerTestInitHelper#closeWorkDatabase() لتجنُّب التحذير الصادر من Closeguard بشأن الموارد التي تم تسريبها. (Ia8d49)

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

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

الإصدار 2.9.0-alpha01

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

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

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

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

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

  • أصبحت طريقة وضع تصميم WorkInfo علنية الآن، ما قد يكون مفيدًا في الاختبار. (Ia00b6، b/209145335)
  • أصبح work-runtime-ktx فارغًا الآن، وأصبح CoroutineWorker والأدوات الأخرى الخاصة بـ kotlin متاحة الآن في العنصر work-runtime الرئيسي. (I71a9a)
  • تمت إضافة طريقة setNextScheduleTimeOverride التي تتيح ضبط جداول العمل الدورية بدقة (I3b4da).
  • تمت إعادة تسمية getEarliestRunTimeMillis إلى getNextScheduleTimeMillis. (I2bd7a)
  • تتم إضافة معلومات وقت التشغيل المجدوَل التالي إلى WorkInfo. (I797e4)
  • تتم إضافة معلومات التأخير الأولي وفترة التكرار إلى WorkInfo. (I52f2f)
  • تمت إضافة طريقة مراقبة العمال من خلال "العمليات" من خلال الطرق getWorkInfosByTagFlow وgetWorkInfoByIdFlow وgetWorkInfosForUniqueWorkFlow وgetWorkInfosFlow (If122a).
  • تمت إضافة التعليقات التوضيحية @RequiresApi(...) غير المتوفّرة إلى وظائف الإنشاء والخصائص في "القيود". وهي الآن متوافقة مع التعليقات التوضيحية المقابلة لها في Constraints.Builder التي كانت موجودة في الإصدارات الأولى من WorkManager. (I6d7d2)
  • تمّ وضع حدّ منفصل في WorkManager الآن للعاملين في عناوين uris للمحتوى من أجل منحهم خانات مضمونة في JobScheduler لمنع عدم توفّر تعديلات المحتوى في ظلّ كثافة الاستخدام العالية. يمكن ضبط الحدّ من خلال Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
  • تتم إضافة قيود إلى WorkInfo. (I162c0)

الإصدار 2.8

الإصدار 2.8.1

22 آذار (مارس) 2023

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

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

  • تم إصلاح خطأ ANR في RescheduleReceiver الذي لم يكن يعالج في السابق بثتَين متزامنتَين بشكل صحيح. (b/236906724)

الإصدار 2.8.0

8 شباط (فبراير) 2023

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

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

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

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

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

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

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

الإصدار 2.8.0-rc01

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

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

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

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

الإصدار 2.8.0-beta02

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

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

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

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

الإصدار 2.8.0-beta01

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

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

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

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

الإصدار 2.8.0-alpha04

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

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

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

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

الإصدار 2.8.0-alpha03

10 آب (أغسطس) 2022

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

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

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

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

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

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

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

الإصدار 2.8.0-alpha02

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

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

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

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

الإصدار 2.8.0-alpha01

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

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

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

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

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

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

الإصدار 2.7

الإصدار 2.7.1

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

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

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

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

الإصدار 2.7.0

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

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

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

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

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

الإصدار 2.7.0-rc01

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

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

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

الإصدار 2.7.0-beta01

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

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

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

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

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

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

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

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

الإصدار 2.7.0-alpha05

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

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

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

الإصدار 2.7.0-alpha04

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

تم إصدار androidx.work:work-*:2.7.0-alpha04.

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

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

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

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

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

الإصدار 2.7.0-alpha03

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

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

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

  • من WorkManager 2.6.0-alpha02: يضيف هذا الإصدار إمكانية استخدام Workers التي يمكن تشغيلها في أي عملية. (Iaf200)

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

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

الإصدار 2.7.0-alpha02

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

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

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

  • يجب تحديد قابلية PendingIntent للتغيير بوضوح لإصلاح عطل عند استهداف Android 12. (b/180884673)

الإصدار 2.7.0-alpha01

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

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

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

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

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

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

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

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

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

الإصدار 2.6.0

الإصدار 2.6.0

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

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

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

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

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

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

الإصدار 2.6.0-rc01

4 آب (أغسطس) 2021

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

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

الإصدار 2.6.0-beta02

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

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

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

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

الإصدار 2.6.0-beta01

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

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

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

الإصدار 2.6.0-alpha02

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

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

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

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

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

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

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

الإصدار 2.6.0-alpha01

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

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

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

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

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

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

    (أو)

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

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

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

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

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

الإصدار 2.5.0

الإصدار 2.5.0

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

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

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

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

الإصدار 2.5.0-rc01

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

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

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

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

الإصدار 2.5.0-beta02

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

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

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

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

الإصدار 2.5.0-beta01

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

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

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

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

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

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

الإصدار 2.5.0-alpha03

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

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

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

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

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

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

الإصدار 2.5.0-alpha02

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

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

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

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

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

  • يزيل WorkManager الآن 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 IssueRegistry في WorkManager نشكرك @ZacSweers من Slack على مساهمتك. (aosp/1217923)

الإصدار 2.3.3

الإصدار 2.3.3

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

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

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

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

الإصدار 2.3.2

الإصدار 2.3.2

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

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

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

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

الإصدار 2.3.1

الإصدار 2.3.1

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

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

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

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

الإصدار 2.3.0

الإصدار 2.3.0

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

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

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

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

الإصدار 2.3.0-rc01

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

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

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

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

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

الإصدار 2.3.0-beta02

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

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

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

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

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

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

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

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

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

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

الإصدار 2.3.0-beta01

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

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

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

  • تمت إضافة قاعدة جديدة لفحص الأخطاء تمنع أخطاء المطوّرين الناتجة عن التنفيذ غير الصحيح androidx.work.Configuration.Provider عند استخدام الإعداد عند الطلب. aosp/1164559

الإصدار 2.3.0-alpha03

23 تشرين الأول (أكتوبر) 2019

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

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

  • تمت إضافة واجهة برمجة التطبيقات WorkManager.createCancelPendingIntent() التي تسهِّل إلغاء WorkRequest بدون الحاجة إلى تسجيل مكوّن آخر في AndroidManifest.xml. تسهّل واجهة برمجة التطبيقات هذه إلغاء WorkRequest من Notification. ونتوقّع أن يتم إقران هذا الإجراء بواجهات برمجة التطبيقات الجديدة للتطبيقات التي تعمل في المقدّمة في الإصدار 2.3.0.
  • يعتمد WorkManager الآن على الإصدار الثابت androidx.room:*:2.2.0.

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

  • تمت إعادة تسمية ForegroundInfo.getNotificationType() إلى ForegroundInfo.getForegroundServiceType() لتكون أكثر اتساقًا مع واجهات برمجة تطبيقات المنصة الأساسية. (b/142729893، aosp/1143316)

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

  • تم إصلاح خطأ ناتج عن مكالمة غير ضرورية إلى setTransactionSuccessful() خارج المعاملة. يحدث ذلك لنقل البيانات النادر. (b/142580433، aosp/1141737)

الإصدار 2.3.0-alpha02

9 تشرين الأول (أكتوبر) 2019

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

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

  • يتيح WorkManager الآن تنفيذ مهام مهمة أو طويلة الأمد يجب أن يحافظ نظام التشغيل على استمرارها. لمزيد من المعلومات، اطّلِع على ListenableWorker#setForegroundAsync() (أو CoroutineWorker#setForeground() لنظام التشغيل Kotlin). (aosp/1133636)

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

  • تمت إعادة تسمية واجهة برمجة التطبيقات containsKey في Data إلى hasKeyWithValueOfType. تمت أيضًا إعادة تسمية طريقة الإضافة المقابلة في مكتبة ktx. (b/141916545)

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

  • يحدِّد WorkManager جدولاً زمنيًا للعمل بشكل عادل عندما يقترب عدد WorkRequest المُدرَجة في "قائمة الانتظار" من الحدود القصوى للتخطيط. (aosp/1105766)
  • لا يُطلِق WorkManager ListenableWorker#onStopped() إلا إذا لم يكتمل العمل. (b/140055777)
  • تزيل أداة WorkManager الآن معلومات التقدّم عندما يتم إيقاف عامل أو يصل إلى حالته النهائية. (aosp/1114572)
  • أصبح Data الآن يتضمن toString()تمثيلًا أكثر فائدة. (b/140945323)
  • توفّر Data الآن طريقة equals() أفضل. وتتيح أيضًا استخدام deepEquals لأنواع Array. (b/140922528)
  • يخزِّن WorkManager الآن قاعدة بياناته الداخلية وملفات الإعدادات المفضّلة في دليل لا يتضمّن نسخة احتياطية. (b/114808216)

الإصدار 2.3.0-alpha01

22 آب (أغسطس) 2019

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

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

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

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

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

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

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

الإصدار 2.2.0

الإصدار 2.2.0

15 آب (أغسطس) 2019

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

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

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

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

الإصدار 2.2.0-rc01

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

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

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

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

الإصدار 2.2.0-beta02

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

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

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

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

الإصدار 2.2.0-beta01

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

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

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

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

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

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

الإصدار 2.1.0

الإصدار 2.1.0

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

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

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

  • يتطلّب تطبيق work-runtime-ktx الآن استخدام Java 8. إذا واجهت أي مشاكل، يمكنك إضافة ما يلي إلى build.gradle: kotlinOptions { jvmTarget = "1.8" }
  • تمت إضافة عملية إعداد على الطلب لخدمة WorkManager، والتي ستنشئ WorkManager فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
    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 على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى أو) أو إصدارات أقدم. هذه مواصلة لعملية الإصلاح في 1.0.0-beta02. b/121345393
  • أضفنا exported=false لبعض المكوّنات في البيان التي كانت تفتقر إلى هذا التعليق التوضيحي.
  • تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في مستندات مستوى الحزمة.

الإصدار 1.0.0-beta02

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

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

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

  • تم إصلاح حالة طارئة يمكن فيها تنفيذ المهام الدورية أكثر من مرة في كل فاصل زمني على الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات). b/121998363
  • تم إصلاح ConcurrentModificationException على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/121345393
  • تم إصلاح تنفيذ العمل بشكل خاطئ عند عدم استيفاء القيود على الأجهزة التي تعمل بالإصدار Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. b/122578012
  • تحسين معالجة إكمال العمل ليكون أسرع في بعض الحالات القصوى b/122358129
  • تمت إضافة تغيير لمعالجة حالات السباق المحتمَلة بين عدّة نُسخ من LiveData التي يستخدمها WorkManager.
  • تم نقل استخدام الإصدار Room من التبعية 1.1.1 بدلاً من الإصدار 1.1.1-rc01، لأنّ هذين الإصدارين متطابقان. b/122578011

الإصدار 1.0.0-beta01

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

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

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

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

الإصدار 1.0.0-alpha13

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

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

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

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

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

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

الإصدار 1.0.0-alpha12

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

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

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

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

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

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

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

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

الإصدار 1.0.0-alpha11

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

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

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

  • work-runtime-ktx تقدّم CoroutineWorker جديدًا.
  • تمت إعادة تسمية WorkStatus إلى WorkInfo. تمّ تغيير أسماء جميع صِيغ طريقة getStatus المقابلة إلى صِيغ getWorkInfo المقابلة. هذا تغيير قد يؤدي إلى حدوث عطل.
  • لم تعُد ListenableWorker.onStopped() تقبل وسيطة منطقية تمثّل ما إذا تم إلغاء WorkRequest. لم تعُد "WorkManager" تُجري هذا التمييز. هذا تغيير قد يؤدي إلى حدوث عطل.
  • تمّت إعادة تسمية حزمة androidx.work.test إلى حزمة androidx.work.testing. هذا تغيير قد يؤدي إلى حدوث عطل.
  • لم تعُد وظائف الإعداد في Constraints جزءًا من واجهة برمجة التطبيقات المتاحة للجميع. هذا تغيير قد يؤدي إلى حدوث عطل.
  • WorkerParameters.getTriggeredContentUris() وWorkerParameters.getTriggeredContentAuthorities() صفيفان تم عرضهما سابقًا. والآن، تُرجع هذه الطرق مجموعات. هذا تغيير قد يؤدي إلى حدوث عطل.
  • تمت إعادة تسمية ListenableWorker.onStartWork() إلى ListenableWorker.startWork(). هذا تغيير قد يؤدي إلى حدوث عطل.
  • لم يعُد باني WorkStatus جزءًا من واجهة برمجة التطبيقات العامة. هذا تغيير قد يؤدي إلى حدوث عطل.
  • تمت إعادة تسمية Configuration.getMaxJobSchedulerID() وConfiguration.getMinJobSchedulerID() إلى Configuration.getMinJobSchedulerId() وConfiguration.getMaxJobSchedulerId() على التوالي. هذا تغيير قد يؤدي إلى حدوث عطل.
  • تمت إضافة الكثير من التعليقات التوضيحية @NonNull إلى واجهة برمجة التطبيقات المتاحة للجميع لتحسين سهولة استخدامها.
  • أضِف واجهة برمجة التطبيقات WorkManager.enqueueUniqueWork() لإضافة OneTimeWorkRequest فريدة إلى "قائمة المحتوى التالي" بدون الحاجة إلى إنشاء WorkContinuation.
  • تُعرِض الآن جميع الصيغ لطريقتَي enqueue وcancel في WorkManager نوع Operation جديدًا. هذا تغيير قد يؤدي إلى حدوث عطل.
  • لم تعُد جميع الصيغ من enqueue تقبل متغيرات الوسائط في WorkRequest. هذا تغيير قد يؤدي إلى حدوث عطل. استخدِم "المجموعات" بدلاً من ذلك. يمكنك استخدام Arrays.asList() لتعديل الرمز الحالي. لقد فعلنا ذلك لتقليل عدد طرق واجهة برمجة التطبيقات ومساحة العرض.
  • سيؤدي الآن محاولة initialize WorkManager أكثر من مرة لكل عملية إلى ظهور IllegalStateException. هذا تغيير قد يؤدي إلى حدوث عطل.

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

  • تستخدم الآن WorkRequest.Builder في العنصر work-runtime-ktx ListenableWorker. الإصلاحات b/117666259
  • تأكَّد من أنّ وقت التشغيل التالي لـ PeriodicWork في المستقبل. الإصلاحات b/118204399
  • أزِل عمليات إدخال/إخراج القرص المحتمَلة عند استخدام WorkManager عند بدء تشغيل التطبيق. إصلاحات b/117796731
  • حلّ مشكلة تعارض في WorkConstraintsTracker إصلاحات android-workmanager/issues/56

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

  • تمت إعادة تسمية WorkStatus إلى WorkInfo. تمّ تغيير أسماء جميع صِيغ طريقة getStatus المقابلة إلى صِيغ getWorkInfo المقابلة.
  • لم تعُد ListenableWorker.onStopped() تقبل وسيطة منطقية تمثّل ما إذا تم إلغاء WorkRequest. لم تعُد "WorkManager" تُجري هذا التمييز.
  • تمّت إعادة تسمية حزمة androidx.work.test إلى حزمة androidx.work.testing.
  • لم تعُد وظائف الإعداد في Constraints جزءًا من واجهة برمجة التطبيقات المتاحة للجميع.
  • WorkerParameters.getTriggeredContentUris() وWorkerParameters.getTriggeredContentAuthorities() صفيفان تم عرضهما سابقًا. والآن، تُرجع هذه الطرق مجموعات.
  • تمت إعادة تسمية ListenableWorker.onStartWork() إلى ListenableWorker.startWork().
  • لم يعُد باني WorkStatus جزءًا من واجهة برمجة التطبيقات العامة.
  • تمت إعادة تسمية Configuration.getMaxJobSchedulerID() وConfiguration.getMinJobSchedulerID() إلى Configuration.getMinJobSchedulerId() وConfiguration.getMaxJobSchedulerId() على التوالي.
  • تُعرِض الآن جميع الصيغ لطريقتَي enqueue وcancel في WorkManager نوعًا جديدًا من Operation.
  • لم تعُد جميع الصيغ من enqueue تقبل متغيرات الوسائط في WorkRequest.
  • سيؤدي الآن محاولة initialize WorkManager أكثر من مرة لكل عملية إلى ظهور IllegalStateException.

الإصدار 1.0.0-alpha10

11 تشرين الأول (أكتوبر) 2018

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

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

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

  • تمّت إزالة جميع طرق وفئَات deprecated السابقة، لا سيما طريقة الإنشاء التلقائية Worker. هذا تغيير قد يؤدي إلى إيقاف واجهة برمجة التطبيقات.
  • تم تغيير اسم NonBlockingWorker إلى ListenableWorker، وهي الآن فئة عامة غير مخفية وجاهزة للاستخدام.
    • توفّر فئة ListenableWorker إمكانية الوصول إلى طريقة مجردة واحدة، وهي ListenableFuture<Payload> onStartWork()، والتي يتمّ استدعاؤها في سلسلة المهام الرئيسية. يعود الأمر إليك في بدء العمل ومعالجته بشكل غير متزامن. عند الانتهاء، عليك تعديل ListenableFuture وفقًا لذلك. يتم توفير عمليات التنفيذ المرجعية لعناصر ListenableFuture في حزمة Futures في alpha02 (راجِع قسم WorkManager أدناه).
    • يمتد Worker إلى ListenableWorker ولا يزال يعمل كالمعتاد، باستخدام طريقة Result doWork() مجردة.
    • تم ترتيب بعض الطرق والأعضاء بشكل عشوائي من Worker إلى ListenableWorker.
    • سنوفّر قريبًا عمليات تنفيذ مرجعية لتطبيقات ListenableWorker التي تستخدم وظائف التشغيل المتعدّد للكائنات في Kotlin (بعد طرح الإصدارات الثابتة) وRxJava2.
  • تم دمج الواجهة WorkerFactory والتنفيذ المحدّد DefaultWorkerFactory في فئة مجردة تُسمى WorkerFactory. يضمن التنفيذ استدعاء السلوك التلقائي المستنِد إلى النسخ كمحاولة أخيرة لأيّ نُسخ من WorkerFactory أنشأها المستخدم. هذا تغيير قد يؤدي إلى حدوث عطل.
  • تمت إزالة WorkManager.synchronous() وWorkContinuation.synchronous() وجميع الطرق ذات الصلة. تمت إضافة ListenableFuture<Void> كنوع الإرجاع للعديد من الطرق في واجهة برمجة التطبيقات. هذا تغيير قد يؤدي إلى إيقاف واجهة برمجة التطبيقات.
    • يمكنك الآن الحصول على البيانات ومراقبتها بشكل متزامن باستخدام ListenableFuture. على سبيل المثال، كان WorkManager.enqueue() يعرض void، ولكنّه يعرض الآن ListenableFuture<Void>. يمكنك استدعاء ListenableFuture.addListener(Runnable, Executor) أو ListenableFuture.get() لتشغيل الرمز البرمجي بعد اكتمال العملية.
    • يُرجى العِلم أنّ هذه العلامات ListenableFuture لا تُعلمك ما إذا نجحت العملية أو تعذّرت، بل تُعلمك فقط بأنّها قد اكتملت. سيظل عليك ربط طرق WorkManager لمعرفة هذه المعلومات.
    • نتجاهل طلبات cancel() على هذه العناصر، لأنّها مربكة ويصعب تحديد سببها (هل تلغي العملية أم العمل الناتج عنها؟). يُعدّ ذلك من ضمن أحكام عقد Future.
    • للحفاظ على التكافؤ مع طرق getStatus* المتزامنة، قدّمنا صيغًا ListenableFuture، وأعادنا تسمية الصيغ الحالية التي كانت تعرض LiveData لتتضمّن "LiveData" صراحةً كجزء من الاسم (على سبيل المثال، getStatusesByIdLiveData(UUID)). هذا تغيير جذري في واجهة برمجة التطبيقات.

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

  • تم إصلاح المشكلة المعروفة من الإصدار alpha09 المتعلّقة بملفات androidx-annotations.pro المكرّرة. يمكنك إزالة الحلّ البديل من ملاحظات الإصدار السابقة عن طريق حذف exclude 'META-INF/proguard/androidx-annotations.pro' من ملف gradle.
  • تمت إضافة إعدادات Proguard للاحتفاظ بإنشاء Worker الجديد. b/116296569
  • إصلاح مشكلة محتملة في حالة تسابق حيث تم REPLACE العمل b/116253486 وb/116677275NullPointerException
  • يقبل WorkContinuation.combine() الآن WorkContinuation واحدًا أو أكثر بدلاً من WorkContinuationَين أو أكثر. b/117266752

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

  • تمّت إزالة جميع طرق وفئَات deprecated السابقة، لا سيما طريقة الإنشاء التلقائية Worker.
  • تم دمج الواجهة WorkerFactory والتنفيذ المحدّد DefaultWorkerFactory في فئة مجردة تُسمى WorkerFactory.
  • تمت إزالة WorkManager.synchronous() وWorkContinuation.synchronous().
  • تعرض طرق WorkManager.getStatus*() الآن ListenableFuture. WorkManager.getStatus*LiveData() إرجاع LiveData

الإصدار 1.0.0-alpha09

19 أيلول (سبتمبر) 2018

مشكلة معروفة

إذا واجهت المشكلة التالية: "تم العثور على أكثر من ملف يتضمّن مسارًا مستقلاً عن نظام التشغيل ‎"META-INF/proguard/androidx-annotations.pro"، يُرجى إدراج ما يلي في ملف gradle كحلّ مؤقت إلى أن نصلح المشكلة في الإصدار alpha10:

رائع

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

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

  • تمت إضافة حلّ آخر كان مطلوبًا لخطأ "100 وظيفة". b/115560696
  • تمت إضافة بعض الإصلاحات لأخطاء قيود المفتاح الخارجي بسبب حالات السباق. b/114705286
  • تُجري ConstraintTrackingWorker.onStopped(boolean) المفوَّضة مكالمات إلى Worker الأساسية. b/114125093
  • فرض الحد الأدنى الصحيح لتأخير الانتظار في Firebase JobDispatcher‏ b/113304626
  • تضمن ميزة "المعالجة المتعدّدة للخيوط" المحسّنة الأداء الداخلي للمكتبة.
  • تصحيح مشكلة محتملة في إزالة تكرار LiveData داخلياً

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

  • يمكنك الآن إنشاء نُسخ من Worker في وقت التشغيل من خلال تحديد WorkerFactory كجزء من WorkManager.Configuration. مصنع النسخ الاحتياطية هو DefaultWorkerFactory، وهو مطابق لسلوك الإصدارات السابقة من WorkManager.
    • تم وضع علامة على علامتَي الإنشاء التلقائيتَين لWorker وNonBlockingWorker بأنّهما قيد الإيقاف. يُرجى استخدام طريقة وضع التصميم الجديدة (Worker(Context, WorkerParameters)) واستدعاء super(Context, WorkerParameters)، وستزيل الإصدارات المستقبلية من WorkManager طريقة وضع التصميم التلقائية.
  • لقد بدأنا باستخدام الإصدار الجديد من ListenableFuture داخليًا (خالٍ من تبعيات Guava). سنضيف ListenableFutures إلى واجهة برمجة التطبيقات في الإصدارات القادمة. سيتيح هذا التغيير إزالة إخفاء NonBlockingWorker في نهاية المطاف.
  • إضافة إمكانية بدء عمل موقّت في TestDriver من خلال TestDriver.setInitialDelayMet(UUID) وTestDriver.setPeriodDelayMet(UUID) b/113360060

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

  • تم إيقاف وظيفتَي الإنشاء التلقائيتَين Worker وNonBlockingWorker نهائيًا. يُرجى نقل البيانات إلى أداة الإنشاء الجديدة في أقرب وقت ممكن. ستزيل الإصدارات المستقبلية المُنشئ التلقائي.

الإصدار 1.0.0-alpha08

27 آب (أغسطس) 2018

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

  • مكونات WorkManager التي تم تصنيفها صراحةً على أنّها غير مُدركة لميزة "التشغيل المباشر" حتى لا يتم تشغيلها أثناء التشغيل المباشر وفي المستقبل، سنوفّر إصدارًا من WorkManager متوافقًا مع عملية التشغيل المباشر. b/112665532
  • تم إصلاح مشكلة عدم تنفيذ العمل الذي تمت إعادة محاولة تنفيذه. b/112604021
  • تم إصلاح عدم تنفيذ العمل الدوري بشكل متكرّر (مرتبط بالمشكلة أعلاه). b/112859683
  • الالتزام بسياسات الانتظار عند تشغيل عملية التطبيق
  • تم تصحيح رسائل الاستثناء في Data للإشارة إلى أنّ الحد الأقصى هو 10 كيلوبايت.
  • تم خفض الحد الأقصى لقيمة Configuration.setMaxSchedulerLimit(int) إلى 50 لمعالجة بعض حالات التأخير في إكمال معالجة JobScheduler. b/112817355

الإصدار 1.0.0-alpha07

16 آب (أغسطس) 2018

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

  • تم إصلاح استعلام SQL محتمل يحتوي على حدود سلبية يمكن أن يعرض عددًا غير محدود من النتائج.
  • عند اكتمال تنفيذ العمل، يتم الآن إلغاء جميع النُسخ التي في انتظار المراجعة من هذا العمل في أدوات جدولة أخرى بشكل صحيح. وقد أدّى ذلك إلى تجاوز الحدّ الأقصى المسموح به لعدد المهام، وهو JobScheduler. b/111569265
  • تم حلّ ConcurrentModificationException في ConstraintTracker. b/112272753
  • تم تغيير التعليقات التوضيحية لنوع الإرجاع في Data.getBooleanArray(String) وData.getIntArray(String) إلى @Nullable بدلاً من @NonNull. b/112275229

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

  • يمتدّ الآن Worker إلى فئة جديدة، NonBlockingWorker. ولن يؤثّر ذلك في أي استخدام حالي. في المستقبل، ستصبح NonBlockingWorker عنصرًا متوافقًا بالكامل مع حلول سلاسل المحادثات المخصّصة.
  • تم تغيير التعليقات التوضيحية لنوع الإرجاع في Data.getBooleanArray(String) وData.getIntArray(String) إلى @Nullable بدلاً من @NonNull. b/112275229
  • إضافات Kotlin: تم إيقاف Map.toWorkData() نهائيًا وتمت إضافة workDataOf(vararg Pair<String, Any?>) من المستوى الأعلى لتكون أكثر اتساقًا مع واجهات برمجة التطبيقات الحالية.

الإصدار 1.0.0-alpha06

1 آب (أغسطس) 2018

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

  • منع قفل قاعدة البيانات عند جدولة العمل b/111801342
  • إصلاح خطأ كان يتسبب في عدم تشغيل PeriodicWork وفقًا للجدول الزمني في وضع "الاستراحة الذكية" b/111469837
  • إصلاح مشكلة تعارض في المعالجة عند تتبُّع القيود التي تؤدي إلى تعطُّل WorkManager googlecodelabs/android-workmanager/issues/56
  • أنشئ WorkRequest فريدة عند استخدام WorkRequest.Builder#build(). b/111408337
  • لا تفعِّل استخدام RescheduleReceiver إلا عندما تكون هناك WorkRequest تحتاج إليه. b/111765853

الإصدار 1.0.0-alpha05

24 تموز (يوليو) 2018

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

  • تم الآن إضافة تعليق توضيحي إلى WorkManager.getInstance() باستخدام @NonNull بدلاً من @Nullable. بدلاً من ذلك، إذا لم يتمّ إعداد العنصر الفردي بشكل صحيح في حالات الإعداد اليدوي، ستُعرِض الطريقة IllegalStateException. هذا تغيير أساسي في واجهة برمجة التطبيقات.
  • تمت إضافة واجهة برمجة تطبيقات جديدة، Configuration.Builder.setMinimumLoggingLevel(int)، يمكنها التحكّم في مستوى تفصيل WorkManager. يسجِّل WorkManager الإصدار Log.INFO والإصدارات الأحدث تلقائيًا.
  • تم تغيير توقيع Data.getString() لكي لا يأخذ قيمة تلقائية بعد الآن (يكون null بشكل ضمني). هذا تغيير جذري في واجهة برمجة التطبيقات.
  • تم وضع علامة @hide على بعض الطرق التي لا يُسمح باستخدامها إلا للاستخدام الداخلي. ويشمل ذلك Constraints وData.toByteArray() وData.fromByteArray(byte[]). هذا تغيير قد يؤدي إلى إيقاف واجهة برمجة التطبيقات.

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

  • لم يعُد WorkManager ينفِّذ المهام أثناء الحالات المعروفة للنسخ الاحتياطي التلقائي. وقد يؤدي ذلك إلى حدوث عطل. b/110564377
  • تم إصلاح مشكلة جدولة PeriodicWorkRequest المزدوجة عند استخدام JobScheduler. b/110798652
  • تم إصلاح مشكلة عدم تنفيذ PeriodicWorkRequest بشكل صحيح بعد وضع السكون في الجهاز. b/111469837
  • تم إصلاح مشكلة تأخيرات البداية عند استخدام Firebase JobDispatcher. b/111141023
  • تم إصلاح بعض المشاكل المحتملة في حالات السباق والتوقيت.
  • تمّت إزالة BroadcastReceiver بشكل صحيح والتي لم تعد مطلوبة.
  • تحسين أداء إعادة الجدولة عند إعادة تشغيل التطبيقات بعد فرض إغلاقها
  • السماح باستدعاء TestScheduler.setAllConstraintsMet(UUID) قبل أو بعد إضافة WorkRequest المحدّد إلى "قائمة الانتظار" b/111238024

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

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

الإصدار 1.0.0-alpha04

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

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

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

الإصدار 1.0.0-alpha03

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

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

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

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

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

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

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

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

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

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

  • تمت إضافة getStatusesSync()، وهو الإصدار المتزامن من WorkContinuation.getStatuses().
  • يمكن لتطبيق Worker التمييز بين الإلغاء الذي يبدأه المستخدم والإيقاف المؤقت الذي تطلبه نظام التشغيل. يعرض Worker.isStopped() القيمة true إذا تم طلب أي نوع من عمليات الإيقاف. يعرض Worker.isCancelled() القيمة true عندما يتم إلغاء العمل صراحةً. b/79632247
  • إضافة إمكانية استخدام JobParameters#getNetwork()‎ في الإصدار 28 من واجهة برمجة التطبيقات ويتم عرض هذا من خلال Worker.getNetwork().
  • تمت إضافة Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) حتى تتمكّن من فرض عدد المهام التي يمكن إرسالها إلى JobScheduler أو AlarmManager. يساعد ذلك في منع WorkManager من أخذ كل خانات JobScheduler المتاحة لديك.
  • تمت إضافة Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) التي تساعد في تحديد نطاق أرقام تعريف مهام JobScheduler الآمنة لاستخدامها من قِبل WorkManager. b/79996760
  • تعرِض الدالة Worker.getRunAttemptCount() عدد عمليات التشغيل الحالية لـ Worker معيّن. b/79716516
  • تتيح لك خدمة WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) إضافة PeriodicWorkRequest فريدة إلى "قائمة الانتظار". b/79600647
  • يؤدي WorkManager.cancelAllWork() إلى إلغاء جميع Worker. يمكن للمكتبات التي تعتمد على WorkManager الاستعلام عن آخر مرة تم فيها استدعاء هذه الطريقة باستخدام WorkManager.getLastCancelAllTimeMillis() لتنظيف إضافي للحالة الداخلية.
  • تمت إضافة WorkManager.pruneWork() لإزالة المهام المكتملة من قاعدة البيانات الداخلية. b/79950952، b/109710758

التغييرات في السلوك

  • تمت إضافة علامة ضمنية لجميع WorkRequest، وهي اسم الفئة المؤهَّل بالكامل للعنصر Worker. يتيح ذلك إمكانية إزالة WorkRequest بدون tag أو عندما لا يكون id متاحًا. b/109572351

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

  • تمت إعادة تسمية Worker.WorkerResult إلى Worker.Result.
  • يحتوي Worker.onStopped الآن على مَعلمة isCancelled إضافية يتم ضبطها علىtrue عند إلغاء Worker صراحةً.

الإصدار 1.0.0-alpha02

24 أيار (مايو) 2018

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

  • تم حلّ NullPointerException في State.isFinished(). b/79550068
  • تم إصلاح مشكلة أدّت إلى إعادة جدولة Worker في ‎Application.onCreate(). b/79660657
  • تم إصلاح مشكلة كانت تتيح جدولة المزيد من العمل أكثر مما يسمح به نظام التشغيل. b/79497378
  • تم نقل عملية تنظيف عمليات قفل التنشيط المرتبطة بعمليات Worker إلى سلسلة المهام في الخلفية.
  • يتم الآن تنفيذ عملية AlarmManager بشكل صحيح لتنظيف البيانات عند اكتمال كل الأعمال المعلّقة.
  • تم إصلاح طلبات بحث SQL لتنظيف البيانات التي كانت تؤثر في اللغات غير الإنجليزية. b/80065360
  • تمت إضافة إمكانية استخدام float في Data. b/79443878
  • يعرض Data.Builder.putAll() الآن مثيلًا من Builder. b/79699162
  • المزيد من javadoc والإصلاحات في المستندات. b/79691663

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

  • يمكن أن تتفاعل Worker مع عملية الإيقاف. يمكن استخدام Worker.isStopped() للتحقّق مما إذا تم إيقاف Worker. يمكن استخدام Worker.onStopped() لتنفيذ عمليات تنظيف بسيطة.
  • تعرض واجهة برمجة التطبيقات Worker.getTags() Set من العلامات المرتبطة بالصفحة Worker.
  • تمت إضافة javax.time.Duration حمولة زائدة لواجهات برمجة التطبيقات التي تأخذ مجموعة من المدة وTimeUnit. يتم الاحتفاظ بهذه البيانات من قِبل @RequiresApi(26).
  • تم نقل إضافات WorkManager من حزمة androidx.work.ktx إلى حزمة androidx.work. تم إيقاف الإضافات القديمة نهائيًا وستتم إزالتها في إصدار مستقبلي.
  • تم إيقاف Configuration.withExecutor() نهائيًا. استخدِم Configuration.setExecutor() بدلاً من ذلك.

الإصدار 1.0.0-alpha01

8 أيار (مايو) 2018

يسهّل WorkManager جدولة تنفيذ عمل الخلفية المضمون والمراعي للقيود. رقم الإصدار الأولي هو 1.0.0-alpha01.