مدير العمل

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

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

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

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

Groovy

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

إنشاء عدد جديد

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

الإصدار 2.10

الإصدار 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.0

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

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

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

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

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

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

الإصدار 2.9.0-rc01

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

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

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

الإصدار 2.9.0-beta01

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

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

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

الإصدار 2.9.0-alpha02

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

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

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

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

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

  • تمت إضافة "stopReason" إلى "WorkInfo". تصبح متاحة في "stopReason" بعد تشغيل العامل. وقد يكون مفيدًا في إعداد التقارير عن stopReason بطريقة سهلة الاستخدام، لأنّه بمجرد توقيف العامل، قد يؤدي ذلك إلى قتل التطبيق نفسه سريعًا جدًا. (I21386)
  • اسمح بضبط الساعة من خلال عملية الضبط، وأن يتم استخدامها لتشغيل تسلسل تنفيذ اختبارات 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 وطرق مشابهة.
  • جدولة دقيقة للعمال الدوريين عبر 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.Builder التي كانت متوفّرة من الإصدارات الأولى من WorkManager. (I6d7d2)
  • يفرض WorkManager الآن حدًا منفصلاً للعاملين في معرّف المحتوى (URI) لمنحهم خانات مضمونة في JobScheduler لتجنُّب فقدان تعديلات المحتوى بسبب الحمل الزائد. يمكن ضبط الحدّ من خلال Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
  • تمّت إضافة القيود إلى WorkInfo. (I162c0)

الإصدار 2.8

الإصدار 2.8.1

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

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

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

  • تم إصلاح خطأ ANR في "RescheduleReceiver" بسبب تعذُّر معالجة عمليتَي بث متزامنتين سابقًا. (b/236906724)

الإصدار 2.8.0

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

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

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

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

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

  • تمت إضافة WorkManager.updateWork لتعديل العمل مع الحفاظ على وقت الإدراج والتسلسل الأصلي له.(I9a248، b/219446409)
  • تمت إضافة ExistingPeriodicWorkPolicy.UPDATE. تسمح هذه السياسة بتعديل عمل دوري حسب الاسم. وهي تشبه REPLACE الحالية، ولكنها أقل إزعاجًا: لا تُلغي العامل في حال كانت قيد التشغيل حاليًا وتحافظ على وقت القائمة، حيث يتم احتساب التأخير الأولي والفترة من وقت الإدراج الأصلي في قائمة الانتظار، بدلاً من وقت التحديث. تم إيقاف REPLACE نهائيًا للحد من الالتباس بين الاسمَين REPLACE وUPDATE اللذين تحملان الاسم نفسه بشكل مشابه جدًا. إذا كنت لا تزال تريد الاحتفاظ بالدلالات السابقة لـ REPLACE، يمكن استخدام CANCEL_AND_REENQUEUE المُضافة حديثًا، والتي تتطابق مع REPLACE. (I985ed، b/219446409)
  • تمت إضافة إمكانية اعتراض استثناءات الجدولة مع توفير Consumer<Throwable> من خلال setSchedulingExceptionHandler).
  • تمت إضافة إمكانية توفير Consumer<Throwable> من خلال setPreviewizationExceptionHandler لتحديد ما إذا كانت هناك مشاكل عند محاولة إعداد 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-الإصدار التجريبي 2 على هذه الالتزامات.

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

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

الإصدار 2.8.0-beta01

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

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

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

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

الإصدار 2.8.0-alpha04

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

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

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

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

الإصدار 2.8.0-alpha03

10 آب (أغسطس) 2022

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

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

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

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

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

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

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

الإصدار 2.8.0-alpha02

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

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

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

  • يمكن الآن إنشاء القيود بشكل مباشر بدلاً من استخدام "أداة الإنشاء"، وهي ميزة ملائمة لمستخدمي لغة 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 for RxJava 2 الآن على getForegroundInfo تعرض رمز Single الذي يمكن استخدامه بدلاً من getForegroundInfoAsync التي تعرض ListenableFuture. (I21c91، b/203851459)
  • تحتوي RxWorker for 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 إلى الإصدار التجريبي 01.

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

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

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

الإصدار 2.7.0-alpha03

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

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

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

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

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

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

الإصدار 2.7.0-alpha02

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

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

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

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

الإصدار 2.7.0-alpha01

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

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

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

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

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

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

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

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

  • أضِف دعمًا لتسريع خدمة WorkRequest.

الإصدار 2.6.0

الإصدار 2.6.0

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

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

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

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

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

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

الإصدار 2.6.0-rc01

4 آب (أغسطس) 2021

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

هذا الإصدار مماثل للنسخة androidx.work:work-*:2.6.0-beta02.

الإصدار 2.6.0-beta02

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

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

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

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

الإصدار 2.6.0-beta01

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

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

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

الإصدار 2.6.0-alpha02

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

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

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

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

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

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

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

الإصدار 2.6.0-alpha01

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

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

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

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

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

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

    (أو)

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

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

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

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

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

الإصدار 2.5.0

الإصدار 2.5.0

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

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

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

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

الإصدار 2.5.0-rc01

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

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

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

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

الإصدار 2.5.0-beta02

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

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

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

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

الإصدار 2.5.0-beta01

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

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

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

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

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

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

الإصدار 2.5.0-alpha03

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

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

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

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

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

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

الإصدار 2.5.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 2.5.0-alpha01

19 آب (أغسطس) 2020

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

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

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

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

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

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

الإصدار 2.4.0

الإصدار 2.4.0

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

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

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

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

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

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

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

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

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

  • يجب مواءمة تتبُّع قيود BATTERY_NOT_LOW بشكل أكبر مع النظام الأساسي. (aosp/1312583)

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

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

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

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

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

الإصدار 2.4.0-rc01

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

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

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

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

الإصدار 2.4.0-beta01

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

تم إطلاق androidx.work:work-gcm:2.4.0-beta01 وandroidx.work:work-runtime:2.4.0-beta01 وandroidx.work:work-runtime-ktx:2.4.0-beta01 وandroidx.work:work-rxjava2:2.4.0-beta01 وandroidx.work:work-testing:2.4.0-beta01. يتضمّن الإصدار 2.4.0-beta01 هذه الالتزامات.

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

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

الإصدار 2.4.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha02

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

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha01

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.3.4

الإصدار 2.3.4

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

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

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

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

الإصدار 2.3.3

الإصدار 2.3.3

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

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

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

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

الإصدار 2.3.2

الإصدار 2.3.2

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

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

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

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

الإصدار 2.3.1

الإصدار 2.3.1

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

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

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

  • إدارة أفضل لمراحل نشاط Notification في Worker التي يتم تشغيلها لفترة طويلة عندما تكون Service التي تعمل في المقدّمة نشطة. (aosp/1218539، b/147249312)
  • يعتمد WorkManager الآن على الإصدار الثابت من androidx.sqlite:sqlite-framework:2.1.0. (aosp/1217729)
  • تمت إضافة قواعد Lit لضمان تحديد 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()".
  • تجمع المكتبة الآن قواعد الوبر الإضافية كجزء من المكتبة التي تساعد في اكتشاف الأخطاء مبكرًا.

الإصدار 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)
  • تمت إضافة قاعدة Lit لضمان إزالة موفِّر المحتوى "androidx.work.impl.WorkManagerInitializer" من "AndroidManifest.xml" عند استخدام الإعداد عند الطلب. (aosp/1167007)
  • تمت إضافة تحذير حول استخدام الوبر عند استخدام enqueue() في PeriodicWorkRequest بدلاً من enqueueUniquePeriodicWork(). (aosp/1166032)

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

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

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

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

التغييرات المتعلّقة بالتبعية

  • يستخدم WorkManager الآن الغرفة 2.2.2.

الإصدار 2.3.0-beta01

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

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

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

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

الإصدار 2.3.0-alpha03

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

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

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

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

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

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

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

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

الإصدار 2.3.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 2.3.0-alpha01

22 آب (أغسطس) 2019

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

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

  • بإمكان ListenableWorker الآن ضبط مستوى التقدّم من خلال واجهة برمجة تطبيقات setProgressAsync(). تمت أيضًا إضافة واجهة برمجة تطبيقات setProgress المقابلة suspend-ing في CoroutineWorker وsetProgress في RxWorker والتي تعرض Single<Void>. من خلال هذه الميزات الجديدة، يمكن للعاملين في واجهات برمجة التطبيقات نقل معلومات مستوى التقدّم من خلال WorkInfo الذي يتضمّن واجهة getProgress API مقابلة. (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)

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

  • تتجاهل أداة الجدولة قيد المعالجة الآن 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
  • تم إصلاح خطأ تسبب في حدوث تغيير في نوافذ تنفيذ WorkRequests بسبب إيقاف العملية. 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. يتضمّن هذا الإصدار عدة واجهات برمجة تطبيقات جديدة.

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

  • 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

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

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

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

الإصدار 2.0.1

الإصدار 2.0.1

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

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

الإصدار 2.0.1-rc01

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

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

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

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

الإصدار 2.0.0

الإصدار 2.0.0

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

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

الإصدار 2.0.0-rc01

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

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

اعتماديات ما قبل AndroidX

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

رائع

dependencies {
    def work_version = "1.0.1"

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

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

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

Kotlin

dependencies {
    val work_version = "1.0.1"

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

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

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

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

الإصدار 1.0.1

الإصدار 1.0.1

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

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

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

الإصدار 1.0.1-rc01

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

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

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

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

الإصدار 1.0.0

الإصدار 1.0.0

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

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

الإصدار 1.0.0-rc02

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

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

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

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

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

الإصدار 1.0.0-rc01

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

هذا هو مرشح إصدار إصدار WorkManager الثابت 1.0.0. يحتوي هذا الإصدار على إصلاح خطأ واحد.

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

  • يحترم التنفيذ المستند إلى AlarmManager الآن نوافذ flex بشكل صحيح لخدمة PeriodicWorkRequests. b/124274584

الإصدار 1.0.0-beta05

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

يحتوي هذا الإصدار على بعض الأخطاء.

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

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

الإصدار 1.0.0-beta04

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

يحتوي هذا الإصدار على بعض الأخطاء.

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

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

الإصدار 1.0.0-beta03

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

يحتوي هذا الإصدار على بعض الأخطاء.

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

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

الإصدار 1.0.0-beta02

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

يحتوي هذا الإصدار على بعض الأخطاء.

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

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

الإصدار 1.0.0-beta01

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

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

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

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

الإصدار 1.0.0-alpha13

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

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

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

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

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

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

الإصدار 1.0.0-alpha12

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

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

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

  • عنصر جديد، وهو work-rxjava2، يعرّف RxWorker. هذا هو ListenableWorker الذي يُتوقَّع أن يكون Single<Payload>.
  • تم إيقاف ميزة Firebase JobDispatcher بسبب اقتراب موعد إيقافها نهائيًا. هذا يعني أنّه لن يتم تحديث عنصر work-firebase بعد ذلك مع الانتقال إلى الإصدار التجريبي. ونحن ندرس إمكانية إضافة بديل في المستقبل.
  • تم دمج Payload في Result. أصبحت السمة Result الآن "فئة مغلقة" تتضمّن ثلاث عمليات تنفيذ ملموسة يمكنك الحصول عليها من خلال Result.success() (أو Result.success(Data)) وResult.failure() (أو Result.failure(Data)) وResult.retry(). أصبحت نتائج ListenableFuture الآن Result بدلاً من Payload. لا تحتوي Worker على طريقتين getter وsetter للمخرجات 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 والطرق التي تشير إليها متاحة للاستخدام العلني. هذا تغيير قد يؤدي إلى عطل.
  • تمت إزالة باقي طرق التباين في WorkManager وWorkContinuation وOneTimeWorkRequest لتبسيط واجهة برمجة التطبيقات. لإصلاح أي مشاكل في التصميم، يمكنك لفّ الصيغ الحالية باستخدام Arrays.asList(...). ما زلنا نضمّن إصدارات وسيطة واحدة لكل طريقة. هذا تغيير قد يؤدي إلى عطل.
  • تمت إزالة WorkContinuation.combine(OneTimeWorkRequest, *) صيغة. كانوا يقدمون واجهة برمجة تطبيقات مُربكة، وبالتالي أصبحت طرق combine الحالية أكثر وضوحًا. هذا تغيير قد يؤدي إلى عطل.

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

  • أصبحت عمليات تنفيذ ما قبل Marshmallow أكثر موثوقية في التعافي من التوقف عن معالجة مهمة قيد التنفيذ بالفعل.
  • يتم تتبُّع LiveData الذي تتم ملاحظته من خلال observeForever من خلال WorkManager. هذا الجزء الخلفي من إصلاح مكتبة الغرفة. b/74477406
  • تقدّم دالة Data.Builder.build() الآن استثناءً إذا تجاوز العنصر المتسلسل الحد الأقصى للحجم. كانت هذه الطريقة تحدث في السابق في سلسلة محادثات في الخلفية ولم تتمكن من معالجتها بشكل صحيح.
  • المزيد من التمييز بين الأعمال التي تم إيقافها والملغاة: ستعرض getWorkInfoById() الخطأ WorkInfo مع CANCELLED State أثناء ListenableWorker.onStopped().
  • التعامل مع null Result على أنّها عمليات فاشلة في ListenableWorker. b/120362353
  • إصلاح نظري حول أجهزة Shield اللوحية التي تستخدم الإصدار 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 على طريقتين getter وsetter للمخرجات Data.
  • تمت إضافة Operation.await() وListenableFuture.await() طريقة إضافة Kotlin.
  • تمت إعادة تسمية "Operation.getException()" إلى "Operation.getThrowable()".
  • لم تعُد الفئة ContentUriTriggers والطرق التي تشير إليها متاحة للاستخدام العلني.
  • تمت إزالة باقي طرق التباين في WorkManager وWorkContinuation وOneTimeWorkRequest لتبسيط واجهة برمجة التطبيقات. لإصلاح أي مشاكل في التصميم، يمكنك لفّ الصيغ الحالية باستخدام Arrays.asList(...). ما زلنا نضمّن إصدارات وسيطة واحدة لكل طريقة.
  • تمت إزالة WorkContinuation.combine(OneTimeWorkRequest, *) صيغة. كانوا يقدمون واجهة برمجة تطبيقات مُربكة، وبالتالي أصبحت طرق combine الحالية أكثر وضوحًا.

الإصدار 1.0.0-alpha11

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

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

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

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

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

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

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

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

الإصدار 1.0.0-alpha10

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

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

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

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

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

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

  • تم إصلاح المشكلة المعروفة من الإصدار alpha09 بشأن ملفات androidx-annotations.pro المكرّرة. يمكنك إزالة هذا الحل من ملاحظات الإصدار السابقة عن طريق حذف exclude 'META-INF/proguard/androidx-annotations.pro' من ملف Gradle.
  • تمت إضافة إعدادات Proguard للحفاظ على دالة إنشاء Worker الجديدة. b/116296569
  • إصلاح NullPointerException المحتملة في حالة سباق كان العمل فيه REPLACEd. 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 الآن الإصدار 1.1.1-rc1 من Room.

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

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

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

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

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

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

الإصدار 1.0.0-alpha02

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

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

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

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

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

الإصدار 1.0.0-alpha01

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

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