لبدء استخدام WorkManager، عليك أولاً استيراد المكتبة إلى مشروع Android.
أضِف التبعيات التالية إلى ملف build.gradle
في تطبيقك:
رائع
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()
: تعذّر تنفيذ الإجراء ويجب إعادة المحاولة في وقت آخر وفقًا لسياسة إعادة المحاولة المتّبعة لديه.
إنشاء WorkRequest
بعد تحديد عملك، يجب جدولته باستخدام خدمة 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
أيضًا معلومات إضافية، مثل القيود التي يجب تنفيذ العمل بموجبها، والإدخال في العمل، والتأخير، وسياسة التراجع لإعادة محاولة العمل. في القسم التالي، تحديد طلبات
العمل، ستتعرف على
المزيد من التفاصيل حول هذه الخيارات بمزيد من التفصيل، بالإضافة إلى فهم
كيفية جدولة عمل فريد ومكرر.
مراجع إضافية
بالإضافة إلى المستندات الإرشادية، هناك العديد من المدونات والدروس التطبيقية حول الترميز ونماذج التعليمات البرمجية المتاحة لمساعدتك في البدء.
عيّنات
- WorkManagerعيّن، تطبيق بسيط لمعالجة الصور
- Sunflower، تطبيق تجريبي يوضح أفضل الممارسات من خلال مكونات بنية متنوعة، بما في ذلك WorkManager.
الدروس التطبيقية حول الترميز
- العمل مع WorkManager (Kotlin) و(Java)
- مدير العمل المتقدّم (Kotlin)
المدوّنات
- التعريف بتطبيق WorkManager
- أساسيات WorkManager
- WorkManager وKotlin
- دورية WorkManager
- تخصيص WorkManager - الأساسيات
- تخصيص WorkManager باستخدام Dagger