بدء استخدام WorkManager

لبدء استخدام WorkManager، يجب أولاً استيراد المكتبة إلى جهاز Android مشروعك.

أضِف الاعتماديات التالية إلى ملف build.gradle في تطبيقك:

Groovy

dependencies {
    def work_version = "2.9.1"

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

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

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

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

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

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

Kotlin

dependencies {
    val work_version = "2.9.1"

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

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

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

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

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

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

بمجرد إضافة التبعيات ومزامنة مشروع Gradle، الخطوة التالية هي تحديد بعض الأعمال التي يجب إجراؤها.

تحديد العمل

يتم تحديد العمل باستخدام Worker الصف. يتم تشغيل طريقة doWork() في الخلفية بشكل غير متزامن سلسلة المحادثات مقدمة من WorkManager.

لإنشاء بعض الأعمال لكي يتم تنفيذها من خلال WorkManager، عليك توسيع فئة Worker تلغي طريقة doWork(). على سبيل المثال، لإنشاء Worker يتم تحميله من الصور، يمكنك إجراء ما يلي:

Kotlin


class UploadWorker(appContext: Context, workerParams: WorkerParameters):
       Worker(appContext, workerParams) {
   override fun doWork(): Result {

       // Do the work here--in this case, upload the images.
       uploadImages()

       // Indicate whether the work finished successfully with the Result
       return Result.success()
   }
}

Java


public class UploadWorker extends Worker {
   public UploadWorker(
       @NonNull Context context,
       @NonNull WorkerParameters params) {
       super(context, params);
   }

   @Override
   public Result doWork() {

     // Do the work here--in this case, upload the images.
     uploadImages();

     // Indicate whether the work finished successfully with the Result
     return Result.success();
   }
}

Result الذي يتم إرجاعه من doWork() بإبلاغ خدمة WorkManager ما إذا كان نجاح العمل، وفي حالة الفشل، ما إذا كان ينبغي تمت إعادة المحاولة.

  • Result.success(): اكتمل العمل بنجاح.
  • Result.failure(): تعذّر العمل.
  • Result.retry(): تعذّر تنفيذ العمل ويجب المحاولة في وقت آخر وفقًا لها سياسة إعادة المحاولة

إنشاء طلب عمل

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

مهما كان اختيارك جدولة العمل، ستستخدم دائمًا WorkRequest بينما تحدد السمة Worker وحدة العمل، WorkRequest (و والفئات الفرعية) تحدد كيف ومتى ينبغي تشغيلها. وفي أبسط الحالات، يمكنك استخدام OneTimeWorkRequest, كما هو موضح في المثال التالي.

Kotlin


val uploadWorkRequest: WorkRequest =
   OneTimeWorkRequestBuilder<UploadWorker>()
       .build()

Java


WorkRequest uploadWorkRequest =
   new OneTimeWorkRequest.Builder(UploadWorker.class)
       .build();

إرسال WorkRequest إلى النظام

أخيرًا، يجب إرسال WorkRequest إلى WorkManager باستخدام enqueue() .

Kotlin


WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

Java


WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest);

يعتمد الوقت المحدد الذي سيتم فيه إعدام العامل على القيود المستخدمة في WorkRequest وفي تحسينات النظام. تم تصميم WorkManager لتقديم أفضل سلوك وفقًا لهذه القيود.

الخطوات التالية

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

مصادر إضافية

بالإضافة إلى الوثائق الإرشادية، هناك العديد من المدونات والدروس التطبيقية حول الترميز والأكواد. العينات المتاحة لمساعدتك في البدء.

نماذج

  • WorkManagerSample، تطبيق بسيط لمعالجة الصور.
  • دوار الشمس، تطبيق تجريبي يعرض أفضل الممارسات بهندسة معمارية مختلفة بما في ذلك WorkManager.

الدروس التطبيقية حول الترميز

المدوّنات