WorkManager

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

تعريف التبعيات

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

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

Groovy

dependencies {
    def work_version = "2.10.3"

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

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

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

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

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

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

Kotlin

dependencies {
    val work_version = "2.10.3"

    // (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. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

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

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 2.10

الإصدار 2.10.3

‫30 يوليو 2025

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

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

  • تم إصلاح مشكلة كانت تؤدي إلى إبلاغ العاملين الذين لديهم قيود شبكة مماثلة لعامل سابق بعدم استيفاء القيود. (b/427115602).

الإصدار 2.10.2

‫18 يونيو 2025

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

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

  • تم إصلاح مشكلة عند استمرار العاملين في تنفيذ طلبات الشبكة والقدرات التلقائية التي تؤدي إلى إعادة إضافة القدرات التي تمت إزالتها، ما يتسبب في سوء سلوك العاملين الذين لديهم قيود على الشبكة. (b/409716532)
  • تم إصلاح خطأ كان يتسبّب في عدم تنفيذ العاملين الذين لديهم قيود على الشبكة على الفور بسبب عدم استيفاء القيود على الرغم من توفّر الشبكة والإمكانات. (b/423403088)

الإصدار 2.10.1

‫23 أبريل 2025

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

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

  • تقليل احتمالية حدوث خطأ TooManyRequestsException عند تسجيل WorkManager لـ NetworkCallback مستخدَم لتتبُّع القيود (b/231499040، b309d5)

الإصدار 2.10.0

‫30 أكتوبر 2024

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

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

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

الإصدار 2.10.0-rc01

‫24 أكتوبر 2024

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

الإصدار 2.10.0-beta01

‫2 أكتوبر 2024

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

الإصدار 2.10.0-alpha04

‫18 سبتمبر 2024

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

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

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

الإصدار 2.10.0-alpha03

‫4 سبتمبر 2024

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

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

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

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

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

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

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

الإصدار 2.10.0-alpha02

‫17 أبريل 2024

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

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

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

الإصدار 2.10.0-alpha01

‫24 يناير 2024

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

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

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

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

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

الإصدار 2.9

الإصدار 2.9.1

‫7 أغسطس 2024

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

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

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

الإصدار 2.9.0

‫29 نوفمبر 2023

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

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

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

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

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

الإصدار 2.9.0-rc01

‫18 أكتوبر 2023

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

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

الإصدار 2.9.0-beta01

‫6 سبتمبر 2023

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

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

الإصدار 2.9.0-alpha02

‫26 يوليو 2023

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

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

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

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

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

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

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

الإصدار 2.9.0-alpha01

‫7 يونيو 2023

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

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

  • إمكانية المراقبة من خلال Flow بدلاً من LiveData، يمكن الآن متابعة تقدّم العامل من خلال WorkManager.getWorkInfosFlow في Flow وطرق مشابهة.
  • جدولة دقيقة للعاملين الدوريين من خلال setNextScheduleTimeOverride يتيح ذلك إجراء حسابات ديناميكية لجدول العمل الدوري التالي، والذي يمكن استخدامه لتنفيذ ميزات متقدّمة، مثل أوقات إعادة التحميل التكيّفية أو سلوك إعادة المحاولة المخصّص أو تشغيل عامل خلاصة الأخبار قبل استيقاظ المستخدم كل صباح بدون حدوث أي انحراف. يجب استخدام ExistingPeriodicWorkPolicy.UPDATE مع هذه الأساليب لتجنُّب إلغاء عامل قيد التشغيل حاليًا أثناء جدولة العامل التالي.
  • اختبارات WorkManager مع ميزة "مطابقة سلاسل المحادثات" في مرحلة الإنتاج يمكن استخدام ExecutorsMode.PRESERVE_EXECUTORS للحفاظ على المنفّذين الذين تم ضبطهم في Configuration واستخدام سلسلة التعليمات الرئيسية الفعلية.
  • تم نقل واجهات برمجة التطبيقات للروتينات المشتركة، مثل 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. وهي الآن متوافقة مع التعليقات التوضيحية المقابلة في دوال الضبط في Constraints.Builder التي كانت متوفّرة في الإصدارات الأولى من WorkManager. (I6d7d2)
  • يحتوي WorkManager الآن على حدّ منفصل لبرامج content 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 على الإصدار 33 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث. (Ie542e، b/238790278)
  • نقل عمليات الإلغاء من CoroutineScope إلى ListenableFuture عند استخدام suspendCancellableCoroutine

الإصدار 2.8.0-rc01

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

تم طرح androidx.work:work-*:2.8.0-rc01. يتضمّن الإصدار 2.8.0-rc01 عمليات الدمج التالية.

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

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

الإصدار 2.8.0-beta02

‫9 نوفمبر 2022

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

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

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

الإصدار 2.8.0-beta01

‫5 أكتوبر 2022

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

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

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

الإصدار 2.8.0-alpha04

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

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

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

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

الإصدار 2.8.0-alpha03

‫10 أغسطس 2022

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

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

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

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

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

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

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

الإصدار 2.8.0-alpha02

‫6 أبريل 2022

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

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

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

الإصدار 2.8.0-alpha01

‫12 يناير 2022

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

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

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

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

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

الإصدار 2.7

الإصدار 2.7.1

‫17 نوفمبر 2021

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

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

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

الإصدار 2.7.0

‫13 أكتوبر 2021

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

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

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

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

الإصدار 2.7.0-rc01

‫29 سبتمبر 2021

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

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

الإصدار 2.7.0-beta01

‫1 سبتمبر 2021

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

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

  • تقليل التنازع على SQLite المتعدد العمليات عند تهيئة WorkManager

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

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

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

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

الإصدار 2.7.0-alpha05

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

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

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

الإصدار 2.7.0-alpha04

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

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

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

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

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

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

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

الإصدار 2.7.0-alpha03

‫21 أبريل 2021

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

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

  • من WorkManager 2.6.0-alpha02: إضافة إمكانية استخدام العاملين الذين يمكنهم التشغيل في أي عملية (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 من خلال التفويض إلى الخدمات التي تعمل في المقدّمة.

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

  • إضافة إمكانية استخدام WorkRequests المستعجلة

الإصدار 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" />
    
  • تمت إضافة دعم لـ Workers التي يمكن تشغيلها في أي عملية. (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 على عمليات الإيداع هذه.

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

  • تضيف هذه السمة إمكانية تشغيل Workers في أي عملية. (Iaf200)

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

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

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

الإصدار 2.6.0-alpha01

‫24 مارس 2021

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

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

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

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

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

    (أو)

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

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

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

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

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

الإصدار 2.5.0

الإصدار 2.5.0

‫27 يناير 2021

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

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

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

الإصدار 2.5.0-rc01

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

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

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

  • تم إصلاح الخطأ الذي كان يؤدي إلى عدم إبطال getWorkInfosLiveData بشكل صحيح بعد تعديل الكيانات عند استخدام واجهة برمجة التطبيقات المستندة إلى WorkQuery. (aosp/1540566 وb/173769028)
  • تم إصلاح الخطأ الذي كان يتسبّب في عدم وضع علامة "ناجحة" على عمليات قاعدة البيانات في بعض الحالات النادرة. يؤدي ذلك إلى حدوث مشاكل في بعض أجهزة Motorola. (aosp/1535368، b/175944460)
  • تم إصلاح خطأ لتجاهل NoSuchElementException عند محاولة إلغاء الربط من عملية متوقفة. (aosp/1530589)
  • تحسين ConstraintTrackingWorker لإيقاف ListenableWorker فقط إذا لم يتم إيقافه من قبل (aosp/1496844، b/172946965)
  • تحديث مكتبات androidx.work لاستهداف الإصدار 8 من Java (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 لتتمكّن من استخدام ids لطلب البحث عن WorkInfos. (aosp/1412372، b/157335295)
  • يتوافق WorkManager بشكل أفضل مع التطبيقات التي تستخدم عمليات متعددة مع عنصر جديد (androidx.work:work-multiprocess:*). يساعد هذا العنصر الجديد في حلّ بعض المشاكل التي تواجهها التطبيقات الكبيرة، بما في ذلك:
    • يجب عادةً إعداد WorkManager في كل عملية تطبيق. وهذا ليس جيدًا لأنّه يؤدي إلى زيادة التنازع على SQLite، ما يتسبب بدوره في حدوث مشاكل أخرى. تتضمّن WorkManager الآن واجهات برمجة تطبيقات جديدة يمكن استخدامها لتحديد عملية تطبيق أساسية باستخدام Configuration#setDefaultProcessName(processName). ‫processName هو اسم عملية مؤهَّل بالكامل ويبدو على النحو التالي: packageName:processName (مثلاً com.example:remote).
    • مجموعة من واجهات برمجة التطبيقات الجديدة: RemoteWorkManager وRemoteWorkContinuation إلى enqueue وcancel وquery لطلبات العمل لا تتضمّن واجهات برمجة التطبيقات هذه متغيرات LiveData لتجنُّب تعارض SQLite في العمليات المتعدّدة. تتم إعادة توجيه جميع طلبات enqueue وcancel وquery إلى عملية تطبيق primary باستخدام AIDL، ويتم عرض ListenableFuture سلس. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

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

  • تزيل WorkManager الآن بشكل أكثر فعالية عمليات WorkRequest المكتملة التي ليس لديها تبعيات غير مكتملة. تم تغيير مدة الفترة الاحتياطية من 7 يوم إلى يوم واحد.1 (aosp/1419708)

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

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

الإصدار 2.5.0-alpha01

19 آب (أغسطس) 2020

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

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

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

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

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

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

  • إصلاح المستندات الخاصة بـ ArrayCreatingInputMerger من قِبل Zac Sweers (github/43)

الإصدار 2.4.0

الإصدار 2.4.0

‫22 تموز (يوليو) 2020

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.4.0-rc01

‫24 يونيو 2020

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

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

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

الإصدار 2.4.0-beta01

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

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

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

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

الإصدار 2.4.0-alpha03

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

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

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

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

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

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

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

الإصدار 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. يكون ذلك مفيدًا عندما يريد المطوّرون طلب البحث عن WorkInfos باستخدام مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع على 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 أكثر فعالية. في السابق، كان برنامج Scheduler الذي لا يزال قيد التنفيذ لا يأخذ في الاعتبار سوى تنفيذ العمل الذي لم يتم تأخيره والذي تم استيفاء قيوده. الآن، يتتبّع برنامج الجدولة قيد التنفيذ WorkRequest التي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequest. لا يلتزم Scheduler أثناء التنفيذ أيضًا بقيود الجدولة (ولكنّه يظلّ مقيّدًا بحجم Executor الذي يستخدمه WorkManager). وهذا يعني أنّ التطبيق يمكنه الآن تنفيذ المزيد من WorkRequest عندما يكون التطبيق في المقدّمة. (aosp/1185778)

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

    • WorkRequest التي تم إكمالها في آخر 24 ساعة
    • WorkRequests التي يتم تنفيذها حاليًا.
    • ‫Scheduled WorkRequests (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 على عمليات الإيداع هذه.

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

  • تم إصلاح خطأ كان يتسبّب في تشغيل عدة مثيلات من Workers التي تستغرق وقتًا طويلاً، وذلك بعد تجاوز فترة التنفيذ البالغة 10 دقائق. (aosp/1247484، b/150553353)
  • إصلاح الخطأ IssueRegistry في أداة lint الخاصة بمكتبة 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)
  • تمت إضافة تحذير lint عند استخدام enqueue() لـ PeriodicWorkRequest بدلاً من enqueueUniquePeriodicWork(). (aosp/1166032)

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

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

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

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

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

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

الإصدار 2.3.0-beta01

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

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

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

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

الإصدار 2.3.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 2.3.0-alpha02

‫9 أكتوبر 2019

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

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

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

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

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

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

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

الإصدار 2.3.0-alpha01

‫22 أغسطس 2019

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

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

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

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

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

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

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

الإصدار 2.2.0

الإصدار 2.2.0

‫15 أغسطس 2019

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

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

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

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

الإصدار 2.2.0-rc01

‫30 يوليو 2019

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

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

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

الإصدار 2.2.0-beta02

‫19 يوليو 2019

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

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

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

الإصدار 2.2.0-beta01

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

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

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

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

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

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

الإصدار 2.1.0

الإصدار 2.1.0

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

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

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

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

الإصدار 2.1.0-rc01

‫27 يونيو 2019

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

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

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

الإصدار 2.1.0-beta02

‫20 يونيو 2019

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

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

  • تستخدِم TestListenableWorkerBuilder الآن WorkerFactory الصحيح عند إنشاء مثيلات من ListenableWorker. b/135275844
  • تم إصلاح الخلل الذي تسبّب في حدوث انحرافات في نوافذ التنفيذ الخاصة بـ WorkRequest بسبب توقّف العملية. b/135272196

الإصدار 2.1.0-beta01

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

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

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

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

الإصدار 2.1.0-alpha03

‫5 يونيو 2019

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

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

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

الإصدار 2.1.0-alpha02

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

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

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

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

  • تمت إضافة إمكانية التفويض إلى WorkerFactory واحد أو أكثر من 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
  • تم تعديل المستندات الخاصة بـ PeriodicWorkRequests للإشارة إلى أنّ وقت العمل المرن غير متاح على الإصدار 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

Groovy

dependencies {
    def work_version = "1.0.1"

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

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

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

Kotlin

dependencies {
    val work_version = "1.0.1"

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

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

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

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

الإصدار 1.0.1

الإصدار 1.0.1

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

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

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

الإصدار 1.0.1-rc01

‫2 أبريل 2019

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

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

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

الإصدار 1.0.0

الإصدار 1.0.0

‫05 مارس 2019

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

الإصدار 1.0.0-rc02

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

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

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

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

  • تم الآن تصنيف Worker التي تعرض Exception غير معالَج بشكل صحيح على أنّها FAILED، ولم تعُد تتسبّب في تعطُّل عملية التطبيق.

الإصدار 1.0.0-rc01

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

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

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

  • يتوافق التنفيذ المستند إلى AlarmManager الآن بشكل صحيح مع flex windows بالنسبة إلى 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
  • تم إصلاح حالة كانت تتسبّب في تسرُّب Wakelocks في WorkManager عند استخدام التنفيذ المستند إلى AlarmManager.

الإصدار 1.0.0-beta03

‫25 يناير 2019

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

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

  • لقد أطلقنا إصدارًا قديمًا 1.0.0-beta02 تسبّب في عدم تنفيذ العمل بشكل صحيح في بعض الحالات. b/123211993
  • تم إصلاح مشكلة عدم الالتزام بشكل صحيح بتوقيت التراجع عن العمل. b/122881597
  • تم إصلاح ConcurrentModificationException على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات أو إصدار أقدم). هذا استمرار للإصلاح في 1.0.0-beta02. b/121345393
  • تمت إضافة exported=false إلى بعض المكوّنات في ملف البيان التي كانت تفتقر إلى هذه التعليق التوضيحي.
  • تم تضمين معلومات حول كيفية تفاعل WorkManager مع نظام التشغيل في المستندات على مستوى الحزمة.

الإصدار 1.0.0-beta02

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

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

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

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

الإصدار 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) وخيارات لدعم عناوين URI للمحتوى التي يتم تشغيلها ببطء. b/119919774
  • تمت إضافة خيار WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). تتطلّب هذه الطريقة استخدام الإصدار 26 من واجهة برمجة التطبيقات.
  • تمت إضافة طريقتَي الإضافة Operation.await() وListenableFuture.await() في Kotlin.
  • تمت إعادة تسمية "Operation.getException()" إلى "Operation.getThrowable()". هذا تغيير قد يؤدي إلى عطل.
  • لم يعُد بإمكان الجميع استخدام الفئة ContentUriTriggers والطُرق التي تشير إليها. هذا تغيير قد يؤدي إلى عطل.
  • تمت إزالة بقية طرق varargs في WorkManager وWorkContinuation وOneTimeWorkRequest لتبسيط واجهة برمجة التطبيقات. لحلّ أي مشاكل في الإنشاء، يمكنك تضمين varargs الحالية في Arrays.asList(...). سنظل نضمّن إصدارات ذات وسيط واحد لكل طريقة. هذا تغيير قد يؤدي إلى عطل.
  • تمت إزالة WorkContinuation.combine(OneTimeWorkRequest, *) خيارات. كانوا يعرضون واجهة برمجة تطبيقات مربكة، فالطُرق الحالية combine أسهل للفهم. هذا تغيير قد يؤدي إلى عطل.

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

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

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

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

الإصدار 1.0.0-alpha11

‫8 نوفمبر 2018

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

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

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

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

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

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

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

الإصدار 1.0.0-alpha10

‫11 أكتوبر 2018

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

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

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

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

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

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

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

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

الإصدار 1.0.0-alpha09

‫19 سبتمبر 2018

مشكلة معروفة

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

Groovy

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

Kotlin

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

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

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

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

  • يمكنك الآن إنشاء مثيلات Worker خاصة بك في وقت التشغيل عن طريق تحديد WorkerFactory كجزء من WorkManager.Configuration. المصنع الاحتياطي هو DefaultWorkerFactory، وهو يتطابق مع سلوك الإصدارات السابقة من WorkManager.
    • تم الآن وضع علامة "متوقّف نهائيًا" على أدوات الإنشاء التلقائية للفئتَين Worker وNonBlockingWorker. يُرجى استخدام الدالة الإنشائية الجديدة (Worker(Context, WorkerParameters)) واستدعاء super(Context, WorkerParameters)، لأنّ الإصدارات المستقبلية من WorkManager ستزيل الدالة الإنشائية التلقائية.
  • لقد بدأنا استخدام العنصر الجديد ListenableFuture داخليًا (بدون تبعيات 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

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

  • تمت إضافة التعليق التوضيحي @NonNull إلى WorkManager.getInstance() بدلاً من @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
  • تم إصلاح بعض المشاكل المحتملة المتعلقة بالتزامن والتوقيت.
  • تمت إزالة BroadcastReceivers التي لم يعُد هناك حاجة إليها بشكل صحيح.
  • تحسين أداء إعادة الجدولة عند إعادة تشغيل التطبيقات بعد فرض إغلاقها
  • يجب أن يكون من الممكن استدعاء TestScheduler.setAllConstraintsMet(UUID) قبل أو بعد إضافة WorkRequest المحدّدة إلى قائمة الانتظار. b/111238024

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

  • تمت إضافة التعليق التوضيحي @NonNull إلى WorkManager.getInstance() بدلاً من @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

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

  • يمكن أن تتفاعل Workers مع إيقافها. يمكن استخدام 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.