العمل المستمر جزء من Android Jetpack.

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

أنواع العمل المستمر

يتعامل WorkManager مع ثلاثة أنواع من العمل المستمر:

  • فورية: المهام التي يجب أن تبدأ على الفور وتكتمل قريبًا. قد يكون مسرّع.
  • مهام طويلة: المهام التي قد يتم تشغيلها لمدة أطول، ومن المحتمل أن تكون أطول من 10 دقائق.
  • يمكن تأجيلها: مهام مجدوَلة تبدأ في وقت لاحق ويمكن تنفيذها بشكل دوري.

يوضح الشكل 1 كيفية ارتباط الأنواع المختلفة من العمل المستمر بأحد البعض

قد يكون العمل المستمر فوريًا أو طويل الأمد أو يمكن تأجيله.
الشكل 1: أنواع العمل المستمر

وبالمثل، يوضح الجدول التالي الأنواع المختلفة من العمل.

النوع التواتر كيفية الوصول
فورًا مرة واحدة OneTimeWorkRequest وWorker لتسريع العمل، يُرجى الاتصال بالرقم setExpedited() على OneTimeWorkRequest.
جري طويل مرة واحدة أو بشكل دوري أي WorkRequest أو Worker. يمكنك الاتصال بـ "setForeground()" في العامل لمعالجة الإشعار.
يمكن تأجيلها مرة واحدة أو بشكل دوري PeriodicWorkRequest وWorker

لمزيد من المعلومات بشأن كيفية إعداد WorkManager، راجع تحديد دليل WorkRequests.

ميزات WorkManager

بالإضافة إلى توفير واجهة برمجة تطبيقات أبسط وأكثر اتساقًا، يحتوي WorkManager على عدد الفوائد الرئيسية الأخرى:

قيود العمل

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

جدولة فعّالة

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

يتم تخزين العمل المجدول في قاعدة بيانات SQLite مُدارة داخليًا يضمن WorkManager استمرار هذا العمل وتتم إعادة جدولته عبر عمليات إعادة تشغيل الأجهزة.

بالإضافة إلى ذلك، يلتزم تطبيق WorkManager بميزات توفير الطاقة وأفضل الممارسات. مثل وضع القيلولة، لذا لا داعي للقلق

العمل المستعجل

يمكنك استخدام WorkManager لجدولة العمل الفوري للتنفيذ في الخلفية. عليك استخدام ميزة العمل السريع للمهام المهمة المستخدم والتي تكتمل خلال بضع دقائق.

سياسة إعادة المحاولة المرنة

يفشل العمل أحيانًا. يقدم WorkManager سياسات إعادة المحاولة المرنة، بما في ذلك سياسة تراجع أسي قابلة للضبط.

سلاسل العمل

بالنسبة إلى الأعمال المعقدة ذات الصلة، يمكنك سلسلة مهام العمل الفردية معًا باستخدام واجهة سهلة الاستخدام تسمح لك بالتحكم في الأجزاء التي تعمل بشكل تسلسلي والتي تعمل بالتوازي.

Kotlin

val continuation = WorkManager.getInstance(context)
    .beginUniqueWork(
        Constants.IMAGE_MANIPULATION_WORK_NAME,
        ExistingWorkPolicy.REPLACE,
        OneTimeWorkRequest.from(CleanupWorker::class.java)
    ).then(OneTimeWorkRequest.from(WaterColorFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(GrayScaleFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(BlurEffectFilterWorker::class.java))
    .then(
        if (save) {
            workRequest<SaveImageToGalleryWorker>(tag = Constants.TAG_OUTPUT)
        } else /* upload */ {
            workRequest<UploadWorker>(tag = Constants.TAG_OUTPUT)
        }
    )

Java

WorkManager.getInstance(...)
.beginWith(Arrays.asList(workA, workB))
.then(workC)
.enqueue();

لكل مهمة عمل، يمكنك تحديد بيانات الإدخال والمخرجات لهذا العمل. عند تسلسل العمل معًا، يمرر WorkManager بيانات الإخراج تلقائيًا من بمهمة عمل واحدة إلى أخرى.

إمكانية التشغيل التفاعلي المضمّنة لسلاسل المحادثات

تطبيق WorkManager يتكامل بسلاسة مع Coroutines وRxJava ويوفر المرونة في دمج واجهات برمجة التطبيقات غير المتزامنة الخاصة بك.

استخدام WorkManager لعمل موثوق

تم تصميم WorkManager للعمل الذي يجب تشغيله بشكل موثوق حتى إذا انتقال المستخدم إلى صفحة أخرى أو الخروج من التطبيق أو إعادة تشغيل الجهاز بالنسبة مثال:

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

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

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

في حين أن الكوروتين هو الحل الموصى به لحالات استخدام معينة، ويجب عدم استخدامها للعمل المستمر. من المهم ملاحظة أن الكوروتينات هو إطار عمل تزامن، في حين أن WorkManager عبارة عن مكتبة للجلسات عملك. وبالمثل، يجب استخدام AlarmManager للساعات أو التقاويم فقط.

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

استبدال واجهات برمجة التطبيقات المتوقّفة

ننصحك باستخدام واجهة WorkManager API البديلة لجميع أنظمة التشغيل Android السابقة. واجهات برمجة تطبيقات الجدولة في الخلفية، بما في ذلك FirebaseJobDispatcher، GcmNetworkManager وJobScheduler.

البدء

راجِع دليل البدء لبدء استخدام WorkManager في التطبيق.

مصادر إضافية

تقدم الأقسام التالية بعض الموارد الإضافية.

الفيديوهات

المدوّنات

نماذج