WorkManager

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

تحديد الاعتماديات

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

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

أنيق

dependencies {
    def work_version = "2.12.0"

    // (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.12.0"

    // (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.12

الإصدار 2.12.0

‫23 سبتمبر 2026

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

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

  • تم تعديل minSdk من الإصدار 23 إلى الإصدار 24 من واجهة برمجة التطبيقات
  • يضيف عنصر جديد، androidx.work:work-analytics، واجهات برمجة تطبيقات تجريبية لمقاييس العمل لفحص سجلّ تنفيذ عملك. تسجّل WorkMetricsInfoRepository WorkMetricsInfo لكل طابع زمني لحدث العمل، ومدة المنفِّذ، وإجمالي وقت التشغيل التراكمي، وتفاصيل محاولات التشغيل. يمكن قراءة المقاييس من خلال طلبات بحث قابلة للإعداد أو ملاحظتها كـ Flow للعمل المنجز. تتطلّب واجهات برمجة التطبيقات هذه الموافقة على @ExperimentalWorkMetricsApi.
  • تتيح لك واجهات برمجة التطبيقات التجريبية الجديدة لمتتبِّع الأحداث مراقبة تنفيذ WorkManager وجدولته مباشرةً. تقبل Configuration.Builder الآن متتبِّعًا لأحداث تنفيذ المنفِّذ (البدء والإنهاء والإيقاف والاستثناءات غير المعالَجة) ومتتبِّعًا لأحداث الجدولة (الإضافة إلى قائمة الانتظار وإلغاء الحظر والتعديل والإلغاء والمتطلبات الأساسية التي لم يتم استيفاؤها). هذه هي اللبنات الأساسية التي تستند إليها work-analytics.

الإصدار 2.12.0-rc01

‫12 أغسطس 2026

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

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

  • تم إصلاح خطأ إملائي في الفئة WorkConstraintsDaoTest واسم الملف. (I0868d)
  • تم تقليل تعارض القفل في PackageManagerService أثناء بدء تشغيل WorkManager من خلال طلب بيانات من ذاكرة التخزين المؤقت لحالات التفعيل التلقائي لبيان المكوّن في PackageManagerHelper. (Id84ba، b/528755807)
  • تم إصلاح مشكلة كانت تؤدي إلى نقل خطافات أحداث يتم في مراحل نشاط التنفيذ وتتبُّع بيانات القياس عن بُعد على الفور إلى الجيل التالي للتحديث عند استدعاء WorkManager.updateWork أثناء تشغيل المنفِّذ بشكل نشط. (Ie80e8، b/511074795)

الإصدار ‎2.12.0-beta01

‫29 يوليو 2026

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

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

  • إصلاح مشكلة تسرُّب الذاكرة عند رصد استثناءات المنفّذ (I3404e، b/532588487)
  • تحسين عملية نشر الإلغاء في RemoteListenableWorker لكي تؤدي عمليات إيقاف العامل التي يبدأها النظام إلى إلغاء الروتينات الفرعية البعيدة بشكل صحيح وإعادة جدولة العمل، بينما تؤدي عمليات الإلغاء الذاتي للعاملين البعيدين إلى وضع علامة FAILED على العمل بشكل صحيح. ملاحظة: يتم حاليًا حظر هذا السلوك باستخدام العلامة المحظورة لمجموعة المكتبات Configuration.isRemoteCancellationPropagationFixEnabled (القيمة التلقائية هي false) للسماح بعملية التحقّق التجريبية وضمان بقاء مقاييس الموثوقية ثابتة قبل إزالة العلامة نهائيًا. (I387f3، b/420724435)

الإصدار 2.12.0-alpha01

‫15 يوليو 2026

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

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

  • تمت إضافة واجهة برمجة التطبيقات WorkMetricsQuery لفلترة معلومات المقاييس (I132b4، b/522338412)
  • نفِّذ workerDurationMillis وtotalRuntimeMillis في WorkMetricsInfo لتتبُّع مدة تنفيذ المنفِّذ وإجمالي وقت التشغيل التراكمي. (I57f65، b/507212208)
  • تمت إضافة الدالتَين الإنشائيتَين retentionDuration (المدة، المستوى 26 من واجهة برمجة التطبيقات أو أعلى) وretentionTime/retentionTimeUnit (المستوى 23 من واجهة برمجة التطبيقات أو أعلى) إلى WorkMetricsInfoRepository للسماح بإزالة المقاييس القديمة، مع ضبط القيمة التلقائية على 7 أيام. (Ifdf2e، b/522338412)
  • إضافة واجهة برمجة تطبيقات لسير العمل عند اكتمال WorkMetricsInfo (I11ec2، b/507212999)
  • إضافة التعليق التوضيحي التجريبي الناقص إلى فئات work-analytics (I1a055، b/528112001)
  • لدى "androidx.benchmark" الآن minSdk يبلغ 24. (Ic2a85)
  • تنفيذ stopReasonCounts وexplicitRetryCount وrunAttemptCount في WorkMetricsInfo (I95498، b/507212225)
  • تنفيذ واجهات برمجة التطبيقات WorkMetricsInfo ومخطط قاعدة البيانات لتتبُّع سجلّ تنفيذ العمل، بما في ذلك الطوابع الزمنية للإضافة إلى قائمة الانتظار وإلغاء الحظر والبدء والانتهاء لأول مرة (I163e9، b/479123623، b/507212482)
  • إضافة واجهة برمجة تطبيقات تجريبية لإيقاف الجدولة الانتهازية داخل العملية (I1062d، b/513299442)
  • إضافة واجهة برمجة تطبيقات تجريبية للاستماع إلى أحداث جدولة WorkManager (I14487، b/448485695)
  • إضافة اسم فئة العامل إلى WorkInfo (I57da1، b/448485695)
  • إضافة علامات توضيح أكثر دقة إلى واجهة برمجة التطبيقات التجريبية لمتتبِّع الأحداث (Icaa8e، b/448485695)
  • إضافة واجهة برمجة تطبيقات جديدة تتيح استرداد مصفوفات السلاسل القابلة للتصغير من مثيلات الفئة Data (I78bc3، b/383071402)
  • إنشاء عنصر work-analytics (Idc7c2، b/465357612)
  • إضافة واجهة برمجة تطبيقات تجريبية لضبط متتبِّع لأحداث تنفيذ المنفِّذ (I06b38، b/448485695)

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

  • استخدام Dispatchers.Default بدلاً من مجموعة سلاسل المحادثات المخصّصة في إعدادات WM التلقائية (Ic2c42، b/506239869)
  • تحسين الاختبارات وإضافة اختبارات لإدارة العمال السيئين (I500f3، b/506239869)
  • تم إصلاح ConcurrentModificationException في عملية إرسال أداة معالجة تنفيذ WorkManager's. (I4cc18، b/506239869)
  • تم إصلاح الأعطال في العملية في WorkManager عند تسجيل عمليات رد الاتصال المتعلقة بقيود الشبكة بسبب عدم توفّر أذونات ACCESS_NETWORK_STATE. (I7045a، b/446013734)
  • تحسين تفاصيل السجلّ عند تفعيل سجلّات تصحيح الأخطاء (Id9e5f، b/491209738)
  • إصلاح الخطأ الذي يؤدي إلى عدم جدولة العمل الذي تمت إعادة محاولته باستخدام نظام التشغيل (I452fc وb/504085166 وb/517339607)
  • تم إصلاح رابط المستند المرجعي Configuration.Provider (Ieedb7، b/340913210)
  • تم إيقاف حظر عمليات ربط الأحداث (I27cd8، b/448485695)
  • تعيد WorkManager الآن محاولة عملية الإعداد عند حدوث خطأ عام SQLiteException. (I98436، b/485368721)
  • تم إصلاح مشكلة كان يمكن أن يتلقّى فيها المطوّرون رمز سبب إيقاف غير موجود وهو 0 من خلال ربطه بـ WorkInfo.STOP_REASON_UNKNOWN. (I0b175، b/479314734)
  • تم إصلاح مشاكل إضافية تتعلّق بتعذُّر إجراء طلبات الشبكة من الخلفية حتى عند استيفاء قيود الشبكة (Ic7f73، b/445324855)
  • التعامل مع استثناء الأمان في NetworkStateTracker (I4b7ca، b/480123154)
  • التأكّد من حصول عناصر جذب التنفيذ على لقطة WorkInfo دقيقة (I25ebb، b/448485695)
  • تم إصلاح مشكلة تعذُّر تنفيذ طلبات الشبكة في الخلفية على نظام التشغيل Android 15. (I60f24 وI8a0a2 وb/452081708) (I5abb7 وb/465016918)
  • تم إصلاح المشكلة المتمثلة في عدم إعادة جدولة WorkRequest الدورية التي يتعذّر تنفيذها بسبب استثناء لم يتم رصده. (Ia6b92، b/443879071)

الإصدار 2.11

الإصدار 2.11.2

‫25 مارس 2026

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

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

  • تم إصلاح مشاكل إضافية تتعلّق بتعذُّر إجراء طلبات الشبكة من الخلفية حتى عند استيفاء قيود الشبكة (Ic7f73 وb/445324855).
  • التعامل مع استثناء الأمان في NetworkStateTracker (I4b7ca، b/480123154)
  • تم إصلاح المشكلة المتمثلة في عدم إعادة جدولة WorkRequest الدورية التي يتعذّر تنفيذها بسبب استثناء لم يتم رصده. (Ia6b92، b/443879071)

الإصدار 2.11.1

‫28 يناير 2026

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

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

  • إصلاح قيود حالة الشبكة التي لا يتم تجاوزها عند حظر الاتصال على الإصدار 15 من نظام التشغيل Android والإصدارات الأحدث (I5abb7، b/465016918)
  • تم إصلاح مشكلة عدم مراعاة حالة الحظر للقيمة الأولية عند تتبُّع قيود الشبكة الثابتة. (I8a0a2، b/452081708)
  • تم إصلاح مشكلة تتعلّق بتمرير قيود طلب الشبكة أثناء حظر الاتصال على الإصدار 15 من نظام التشغيل Android والإصدارات الأحدث. (I60f24، b/452081708)

الإصدار 2.11.0

‫22 أكتوبر 2025

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

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

  • تم تعديل minSdk من المستوى 21 إلى المستوى 23 من واجهة برمجة التطبيقات.
  • تمت إضافة واجهة برمجة التطبيقات setRemoteSessionTimeoutMillis في أداة إنشاء الإعدادات WorkManager للسماح بضبط مقدار الوقت الذي تظل فيه جلسة RemoteWorkManager نشطة منذ آخر استخدام لها.

الإصدار 2.11.0-rc01

‫8 أكتوبر 2025

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

الإصدار 2.11.0-beta01

‫24 سبتمبر 2025

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

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

  • أضِف stopRunningWorkWithReason إلى WorkManager TestDriver. (Ie53b2، b/439955564)

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

  • إصلاح مشكلة توقّف الخدمة التي تعمل في المقدّمة عند توفّر أوامر في انتظار التنفيذ (Iae822، b/432069314)
  • إصلاح مشكلة تعذُّر إلغاء ربط الخدمة البعيدة في عامل الروتين الفرعي البعيد (I842f2، b/247113322)

الإصدار 2.11.0-alpha01

‫27 أغسطس 2025

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

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

  • تم تعديل minSdk من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 لواجهة برمجة التطبيقات (Ibdfca، b/380448311، b/435705964، b/435705223)
  • تمت إضافة واجهة برمجة التطبيقات setRemoteSessionTimeoutMillis في أداة إنشاء الإعدادات في WorkManager لإتاحة ضبط مقدار الوقت الذي تظل فيه جلسة RemoteWorkManager نشطة منذ آخر استخدام لها. (Ib23c8)
  • أضِف واجهة برمجة تطبيقات تجريبية في WorkRequest.Builder لتطبيق التراجع التدريجي عند مقاطعة النظام للعمل. (Ie2dc7، b/335513480)
  • إضافة واجهة برمجة تطبيقات اختبارية لتمرير فئة منفِّذ مختلفة إلى TestListenableWorkerBuilder عن الفئة التي يتم إنشاؤها لتوفير عمليات تنفيذ مخصّصة WorkerFactory (If6bff، b/389154854)

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

  • تخزين إمكانات الشبكة مؤقتًا في SharedNetworkCallback لمنع عمليات الاتصال بين العمليات غير الضرورية (Ie4027، b/427115602)
  • تم إصلاح مشكلة في تقييم قيود الشبكة، حيث إنّ عناصر العمل التي تلي العنصر الأول لا تحصل على إمكانات الشبكة الحالية، بل يتم عرض الخطأ ConstraintsNotMet بعد انتهاء المهلة (Ib6a66، b/427115602)

الإصدار 2.10

الإصدار 2.10.5

‫24 سبتمبر 2025

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

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

  • إصلاح مشكلة توقّف الخدمة التي تعمل في المقدّمة عند توفّر أوامر في انتظار التنفيذ (Iae822، b/432069314)

الإصدار 2.10.4

‫10 سبتمبر 2025

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

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

  • تم إصلاح مشكلة عدم إمكانية إلغاء ربط الخدمة البعيدة في RemoteCoroutineWorker (I842f2، b/247113322)

الإصدار 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 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون المكوّن الإضافي لنظام Gradle المتوافق مع Android‏ (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)
  • إضافة معالجات استثناء مخصّصة للعاملين (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 الآن على حدّ أقصى منفصل للعاملين في معرّف الموارد المنتظم للمحتوى لمنحهم خانات مضمونة في JobScheduler ومنع فقدان تحديثات المحتوى في ظل الحمل الكبير. يمكن ضبط الحدّ الأقصى من خلال Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
  • تمت إضافة قيود إلى WorkInfo. (I162c0)

الإصدار 2.9.0-rc01

‫18 أكتوبر 2023

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

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

الإصدار 2.9.0-beta01

‫6 سبتمبر 2023

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

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

الإصدار 2.9.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 2.9.0-alpha01

‫7 يونيو 2023

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

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

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

الإصدار 2.8.0-alpha02

‫6 أبريل 2022

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

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

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

الإصدار 2.8.0-alpha01

‫12 يناير 2022

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

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

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

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

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

الإصدار 2.7

الإصدار 2.7.1

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

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

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

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

الإصدار 2.7.0

‫13 أكتوبر 2021

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

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

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

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

الإصدار 2.7.0-rc01

‫29 سبتمبر 2021

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

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

الإصدار 2.7.0-beta01

‫1 سبتمبر 2021

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

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

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

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

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

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

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

الإصدار 2.7.0-alpha05

‫21 يوليو 2021

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

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

الإصدار 2.7.0-alpha04

‫2 يونيو 2021

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

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

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

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

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

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

الإصدار 2.7.0-alpha03

‫21 أبريل 2021

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

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

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

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

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

الإصدار ‎2.7.0-alpha02

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

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

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

  • تحديد قابلية التغيّر في PendingIntent بشكلٍ واضح لإصلاح عُطل عند استهداف الإصدار 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.Initializers الأخرى من استخدامه كعنصر تابع. (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 دائمًا مع العملية المحدّدة. تعمل أداة الجدولة أثناء المعالجة أيضًا في العملية المحدّدة.
  • في بعض الأحيان، لا يمكن إنشاء مثيل JobService من ActivityManager لبدء مهمة. يؤدي ذلك إلى تجاهل المهمة الأساسية بدون إشعار بسبب خطأ في النظام الأساسي. تضمن WorkManager الآن توفُّر مهام احتياطية لكل WorkRequest عند تهيئة Application من خلال مهام التوفيق. يؤدي ذلك إلى تحسين موثوقية تنفيذ المهام بشكل كبير. (b/172475041 وaosp/1489577)
  • يحدّ WorkManager من نمو قاعدة البيانات من خلال تقليل مدة التخزين المؤقت التي يتم تتبُّع WorkRequest فيها بعد اكتمال WorkRequest. كانت المدة 7 يومًا في السابق. تم تقليلها إلى 1 يوم بالإضافة إلى مدة keepResultsForAtLeast. (aosp/1419708)
  • أصبحت TestListenableWorkerBuilder متوافقة الآن مع الفئة المادية التي توسّع ListenableWorker لتسهيل الاختبار. (aosp/1443299 وb/169787349)
  • تتوفّر الآن أداة فحص WorkManager عند استخدام الإصدار Arctic Fox من "استوديو Android".

الإصدار 2.5.0-rc01

‫13 يناير 2021

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

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

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

الإصدار ‎2.5.0-beta02

‫2 ديسمبر 2020

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

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

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

الإصدار ‎2.5.0-beta01

‫28 أكتوبر 2020

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

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

  • يحدّ WorkManager تلقائيًا من عدد WorkRequest التي يمكن أن يلتقطها المجدول أثناء المعالجة. لا تزال الطلبات تُنفَّذ بترتيب الوارد أولاً يُباع أولاً (FIFO). (aosp/1455228)
  • تحاول WorkManager استرداد البيانات عندما تكون حالة متجر بيانات التطبيق سيئة. (aosp/1463103)

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

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

الإصدار 2.5.0-alpha03

‫14 أكتوبر 2020

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

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

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

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

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

الإصدار 2.5.0-alpha02

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

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

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

  • أضِف واجهة برمجة تطبيقات إلى WorkQuery لتتمكّن من استخدام 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)

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

الإصدار 2.4.0

الإصدار 2.4.0

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

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

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

  • أصبحت أداة جدولة العمليات في WorkManager أكثر فعالية. في السابق، كان Scheduler قيد التنفيذ يراعي فقط تنفيذ العمل الذي لم يتأخر والذي تم استيفاء قيوده. الآن، يتتبّع برنامج الجدولة قيد التنفيذ WorkRequest التي قد يتم تنفيذها في المستقبل، بما في ذلك PeriodicWorkRequests. لا يلتزم Scheduler الذي قيد التنفيذ أيضًا بحدود الجدولة (ولكنّه يظلّ مقيّدًا بحجم Executor الذي يستخدمه WorkManager). وهذا يعني أنّه يمكن للتطبيق الآن تنفيذ عدد أكبر بكثير من 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. يكون ذلك مفيدًا عندما يريد المطوّرون البحث عن WorkInfo من خلال مجموعة من السمات المتعددة. لمزيد من المعلومات، يُرجى الاطّلاع على WorkQuery.Builder withStates(...) أو WorkQuery.Builder withTags(...) أو WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230 وb/143847546)

  • سيتم الآن الإبلاغ عن طلبات setForegroundAsync() التي لم تكتمل قبل اكتمال طلب ListenableWorker من خلال IllegalStateException في ListenableFuture التي تم إرجاعها. (aosp/1262743)

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

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

الإصدار 2.4.0-alpha01

‫4 مارس 2020

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

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

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

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

    • طلبات 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 هذه التعديلات.

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

  • تم إصلاح خطأ كان يتسبّب في تشغيل عدة مثيلات من عملية Worker طويلة الأمد، بعد تجاوز فترة التنفيذ البالغة 10 دقائق. (aosp/1247484 وb/150553353)
  • إصلاح خطأ في أداة lint الخاصة بمكتبة WorkManager IssueRegistry نشكر @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)
  • تم تحسين إدارة مراحل نشاط "الخدمة التي تعمل في المقدّمة" لبرامج Worker التي تعمل لفترة طويلة. (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(). هذا تغيير غير متوافق مع الإصدارات السابقة. يتيح لك ذلك تنفيذ العديد من عمليات Worker الطويلة في الوقت نفسه. تساعد WorkManager أيضًا في إدارة مدة صلاحية Notification المقدَّمة بشكل أفضل. (b/145473554 وaosp/1181208 وasop/1181216 وasop/1183577)

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

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

التغييرات في الاعتماديات

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

الإصدار 2.3.0-beta01

‫20 نوفمبر 2019

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

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

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

الإصدار 2.3.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 2.3.0-alpha02

‫9 أكتوبر 2019

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

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

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

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

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

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

  • يجدول WorkManager العمل بشكل عادل عندما يقترب عدد 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. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

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

  • يمكن الآن ListenableWorkers ضبط مستوى التقدّم من خلال واجهة برمجة التطبيقات 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 المسجّلين باستخدام 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

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

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

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

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

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

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

الإصدار 2.1.0-alpha01

‫24 أبريل 2019

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

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

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

الإصدار 2.0.1

الإصدار 2.0.1

‫9 أبريل 2019

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

الإصدار 2.0.1-rc01

‫3 أبريل 2019

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

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

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

الإصدار 2.0.0

الإصدار 2.0.0

‫20 مارس 2019

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

الإصدار 2.0.0-rc01

‫7 مارس 2019

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

المهام التابعة قبل AndroidX

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

أنيق

dependencies {
    def work_version = "1.0.1"

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

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

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

Kotlin

dependencies {
    val work_version = "1.0.1"

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

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

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

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

الإصدار 1.0.1

الإصدار 1.0.1

‫9 أبريل 2019

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

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

الإصدار 1.0.1-rc01

‫2 أبريل 2019

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

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

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

الإصدار 1.0.0-beta01

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

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

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

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

الإصدار ‎1.0.0-alpha13

‫12 ديسمبر 2018

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

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

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

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

  • تم نقل androidx.work.Result ليصبح فئة داخلية من ListenableWorker.

الإصدار ‎1.0.0-alpha12

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

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

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

  • يقدّم العنصر الجديد "work-rxjava2" الميزة "RxWorker". هذه ListenableWorker تتوقّع Single<Payload>.
  • تمت إزالة إمكانية استخدام Firebase JobDispatcher بسبب إيقافها نهائيًا قريبًا. يعني ذلك أنّه لن يتم تعديل عنصر work-firebase بعد الآن مع اقترابنا من الإصدار التجريبي. وسنعمل على إضافة خيار بديل في المستقبل.
  • تم دمج Payload في Result. أصبحت Result الآن "فئة محكمة الإغلاق" تتضمّن ثلاث عمليات تنفيذ ملموسة، يمكنك الحصول عليها من خلال Result.success() (أو Result.success(Data)) وResult.failure() (أو Result.failure(Data)) وResult.retry(). تؤدي عمليات البحث عن ListenableFuture الآن إلى عرض Result بدلاً من Payload. لا تتضمّن Worker طرقًا للحصول على قيمة Data وضبطها. هذا تغيير غير متوافق مع الإصدارات السابقة.
  • تمت إضافة Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) والمتغيرات لتوفير دعم أفضل لمعرّفات الموارد الموحّدة (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 Result على أنّها حالات تعذّر في 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 إلى قائمة الانتظار OneTimeWorkRequest الفريدة بدون الحاجة إلى إنشاء WorkContinuation.
  • تعرض الآن جميع أشكال الطريقتَين enqueue وcancel في WorkManager نوعًا جديدًا هو Operation. هذا تغيير غير متوافق مع الإصدارات السابقة.
  • لم تعُد جميع صيغ enqueue تقبل varargs لـ WorkRequests. هذا تغيير غير متوافق مع الإصدارات السابقة. استخدِم "المجموعات" بدلاً من ذلك. يمكنك استخدام 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 تقبل varargs لـ WorkRequest.
  • سيؤدي محاولة initialize WorkManager أكثر من مرة واحدة لكل عملية إلى ظهور IllegalStateException.

الإصدار ‎1.0.0-alpha10

‫11 أكتوبر 2018

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

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

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha09

‫19 سبتمبر 2018

مشكلة معروفة

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

أنيق

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

Kotlin

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

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha08

‫27 أغسطس 2018

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

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

الإصدار ‎1.0.0-alpha07

‫16 أغسطس 2018

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

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

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

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

الإصدار ‎1.0.0-alpha06

‫1 أغسطس 2018

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

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

الإصدار ‎1.0.0-alpha05

‫24 يوليو 2018

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha04

‫26 يونيو 2018

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

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

الإصدار ‎1.0.0-alpha03

‫19 يونيو 2018

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

  • تم إصلاح مشكلة التزامن في التنفيذ المستند إلى AlarmManager. b/80346526.

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

  • تستمر الآن المهام التي تتضمّن مشغّلات معرّف موارد منتظم للمحتوى في العمل حتى بعد إعادة التشغيل. 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

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

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

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

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

الإصدار ‎1.0.0-alpha02

‫24 مايو 2018

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

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

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

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

الإصدار ‎1.0.0-alpha01

‫8 مايو 2018

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