لبدء استخدام 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.
الدروس التطبيقية حول الترميز
- العمل مع WorkManager (Kotlin) و(Java)
- Advanced WorkManager (Kotlin)
المدوّنات
- تقديم WorkManager
- أساسيات WorkManager
- WorkManager وKotlin
- دورية WorkManager
- تخصيص WorkManager - Fundamentals
- تخصيص WorkManager باستخدام Dagger