WorkManager

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

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

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

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

Groovy

dependencies {
    def work_version = "2.9.1"

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

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

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

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

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

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

Kotlin

dependencies {
    val work_version = "2.9.1"

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

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

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

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

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

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

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

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

ملاحظات

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

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

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

الإصدار 2.10

الإصدار 2.10.0

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

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

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

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

الإصدار 2.10.0-rc01

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

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

الإصدار 2.10.0-beta01

2 أكتوبر 2024

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

الإصدار 2.10.0-alpha04

18 سبتمبر 2024

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

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

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

الإصدار 2.10.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 2.10.0-alpha02

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

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

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

  • تمت إضافة إمكانية إرسال نطاقات تتبُّع من خلال @RestrictTo Tracer قابل للضبط في WorkManager. (I17d7f، b/260214125)
  • تمت إضافة Configuration.workerCoroutineContext للتحكّم في أداة الإرسال التي يتم تنفيذ CoroutineWorker فيها. ويُنصح بتجنب استخدام Dispatchers.Default في WorkManager تمامًا. (Icd1b7)
  • إضافة معالجات استثناءات مخصّصة لعمال "مهام 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، من Artifact work-runtime-ktx الإضافي إلى وقت تشغيل العمل الرئيسي الخاص بالعناصر. أصبحت Work-runtime-ktx فارغة الآن.

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

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

الإصدار 2.8

الإصدار 2.8.1

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

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

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

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

الإصدار 2.8.0

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

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

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

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

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

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

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

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

الإصدار 2.7

الإصدار 2.7.1

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

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

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

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

الإصدار 2.7.0

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

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

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

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

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

الإصدار 2.7.0-rc01

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

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

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

الإصدار 2.7.0-beta01

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

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

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

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

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

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

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

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

الإصدار 2.7.0-alpha05

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

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

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

الإصدار 2.7.0-alpha04

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

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

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

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

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

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

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

الإصدار 2.7.0-alpha03

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

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

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

  • من WorkManager 2.6.0-alpha02: يضيف هذا الإصدار إمكانية استخدام 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 بشكل صريح لإصلاح عطل عند استهداف الإصدار 12 من نظام التشغيل Android. (b/180884673)

الإصدار 2.7.0-alpha01

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

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

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

  • يقدّم WorkManager واجهة برمجة تطبيقاتWorkRequest.Builder.setExpedited(...) جديدة لمراعاة قيود الخدمات التي تعمل في المقدّمة في 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

.

الإصدار

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 التي يمكن أن يرصدها جدول التشغيل الجاري. لا تزال الطلبات قائمة بأمر FIFO. (aosp/1455228)
  • تحاول WorkManager الاسترداد عندما تكون قاعدة بيانات التطبيق في حالة سيئة. (aosp/1463103)

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

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

الإصدار 2.5.0-alpha03

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

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

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

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

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

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

الإصدار 2.5.0-alpha02

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

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

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

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

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

  • يزيل WorkManager الآن WorkRequest المكتملة التي لا تتضمّن أيّ تبعيات غير مكتملة بشكل أكثر فاعلية. تم تغيير مدة التخزين المؤقت من 7 يوم إلى 1 يوم. (aosp/1419708)

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

  • يُعدِّل WorkManager الآن المهام بشكل استباقي حتى تتم مزامنة مهام WorkRequest ومهام JobScheduler عند بدء WorkManager. (aosp/1412794، b/166292069)

الإصدار 2.5.0-alpha01

19 آب (أغسطس) 2020

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

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

  • سيتم إجراء تغييرات على واجهات برمجة التطبيقات الداخلية التي تتيح لنا توفير أدوات أفضل في WorkManager من الآن فصاعدًا. يُرجى متابعتنا للحصول على آخر الأخبار.

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

  • التعامل مع SecurityException عند تتبُّع حالة الشبكة على بعض الأجهزة (aosp/1396969)

المساهمة الخارجية

الإصدار

الإصدار 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
    • تمت إضافة قاعدة Lint جديدة تضمن أن ListenableWorkerعمليات التنفيذ أصبحت الآن public عند استخدام WorkerFactory التلقائي. (aosp/1291262)
  • إنّ المكالمات التي يتم إجراؤها إلى setForegroundAsync() والتي لا تكتمل قبل إكمال ListenableWorker سيتم الآن الإشارة إليها من خلال IllegalStateException في ListenableFuture المعروض. (aosp/1262743)

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

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

الإصدار 2.4.0-rc01

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

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

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

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

الإصدار 2.4.0-beta01

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

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

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

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

الإصدار 2.4.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha02

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

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

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

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

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

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

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

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

  • تم إصلاح قاعدة التدقيق التي تتحقّق من مدد الفواصل الزمنية غير الصالحة للعناصر 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.

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

الإصدار 2.3.0-alpha01

22 آب (أغسطس) 2019

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

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

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

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

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

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

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

الإصدار 2.1.0-rc01

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

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

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

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

الإصدار 2.1.0-beta02

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

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

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

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

الإصدار 2.1.0-beta01

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

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

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

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

الإصدار 2.1.0-alpha03

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

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

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

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

الإصدار 2.1.0-alpha02

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha01

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

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

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

  • تمت إضافة عملية إعداد على الطلب لخدمة WorkManager، والتي ستنشئ WorkManager فقط عند الإشارة إليها. b/127497100 لإعداد مشروعك لبدء التشغيل عند الطلب:
    1. أوقِف أداة الإعداد التلقائي.
    2. نفِّذ Configuration.Provider على عنصر Application المخصّص.
    3. غيِّر كل مراجع WorkManager.getInstance() إلى WorkManager.getInstance(Context). وكجزء من هذا التغيير، تم إيقاف WorkManager.getInstance() نهائيًا. من الأفضل دائمًا الاتصال بجهاز WorkManager.getInstance(Context) البديل الجديد، حتى إذا لم تكن بصدد تنفيذ عملية إعداد على الطلب.
  • تمت إضافة إمكانية إنشاء فئات Worker وListenableWorker قابلة للاختبار على مستوى الوحدة باستخدام TestWorkerBuilder وTestListenableWorkerBuilder في أثر work-testing.
    • يُرجى العلم أنّ work-testing يستخدِم الآن Kotlin كتبعية، ولكنه أيضًا يتضمّن عدة إضافات Kotlin تلقائيًا.
  • تمت إضافة عدد محاولات التشغيل إلى WorkInfo. b/127290461
  • يمكن لأنواع Data الآن تخزين واسترداد وحدات البايت وصفائف البايت. لا يؤدي ذلك إلى تغيير الحد الأقصى لحجم عناصر Data.
  • تم إيقاف CoroutineWorker.coroutineContext نهائيًا. تم إدخال هذا الحقل بشكلٍ غير صحيح بصفته CoroutineDispatcher، ومن المفترض ألا تحتاج إليه بعد الآن لأنّه يمكنك الانتقال إلى coroutineContext المطلوبة بنفسك في نص الدالة المعلّقة.
  • تتم إضافة تعليقات توضيحية إلى RxWorker.createWork() وRxWorker.getBackgroundScheduler() بنوعَي إرجاع (@NonNull).

الإصدار 2.0.1

الإصدار 2.0.1

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

تم إصدار WorkManager 2.0.1. هذا الإصدار مماثل للإصدار 2.0.1-rc01.

الإصدار 2.0.1-rc01

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

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

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

  • تعمل اختبارات Robolectric الآن بشكلٍ سليم مع WorkManager. b/122553577
  • تم إصلاح مشكلة تتعلّق بتعطُّل في الحالات القصوى بسبب عدم إزالة بيانات تتبُّع القيود في واجهات برمجة تطبيقات 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

  • يتم الآن وضع علامة "FAILED" بشكلٍ صحيح على "Worker" التي تعرض رمز الخطأ Exception بدون علامة، وتتوقّف عن تعطُّل عملية التطبيق.

الإصدار 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 من واجهة برمجة التطبيقات.
  • تمت إضافة طريقتَي إضافة Kotlin Operation.await() وListenableFuture.await().
  • تمت إعادة تسمية 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 مع State CANCELLED خلال 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 والطرق التي تشير إليها لم تعُد متاحة للاستخدام العام.
  • تمت إزالة بقية طرق التباين في WorkManager وWorkContinuation وOneTimeWorkRequest لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإصدار، يمكنك دمج الاختلافات الحالية باستخدام Arrays.asList(...). ما زلنا نُدرِج إصدارات تتضمّن مَعلمة واحدة لكل طريقة.
  • تمت إزالة WorkContinuation.combine(OneTimeWorkRequest, *) صيغة. كانت واجهة برمجة التطبيقات التي يقدّمونها مربكة، وطرق combine الحالية أكثر سهولة في الفهم.

الإصدار 1.0.0-alpha11

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

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

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

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

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

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

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

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

الإصدار 1.0.0-alpha10

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

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

نتوقّع أن يدخل 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.