القيود والجدولة
نفّذ العمل عند تحقق الشروط المناسبة
القيود والجدولة درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.
القيود والجدولة
يحدد Worker ما يجب فعله. أما WorkRequest فيحدد متى يُشغَّل وتحت أي شروط. تنشئ طلبًا، وتضيف إليه القيود، ثم تضعه في قائمة الانتظار.
ما المقصود بالقيود
القيود هي شروط يجب تحققها قبل تشغيل العمل، مثل توفر اتصال بالشبكة أو توصيل الجهاز بالشاحن. ينتظر WorkManager حتى تتحقق هذه الشروط.
إنشاء القيود
استخدم Constraints.Builder للإعلان عن متطلباتك.
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresCharging(true)
.build()أنواع القيود الشائعة
تشمل القيود المستخدمة بكثرة ما يلي:
setRequiredNetworkType(CONNECTED وUNMETERED وغيرهما)setRequiresChargingsetRequiresBatteryNotLowsetRequiresDeviceIdlesetRequiresStorageNotLow
إنشاء OneTimeWorkRequest
للعمل الذي يُشغَّل مرة واحدة، استخدم OneTimeWorkRequestBuilder مع تحديد فئة العامل، ثم أضف القيود.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(constraints)
.build()تمرير بيانات الإدخال
أرفق بيانات الإدخال بالطلب باستخدام setInputData؛ ويقرأها العامل عبر inputData.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setInputData(workDataOf("user_id" to "42"))
.setConstraints(constraints)
.build()وضع العمل في قائمة الانتظار
احصل على نسخة WorkManager واستدعِ enqueue. يحفظ WorkManager الطلب ويشغّله عند استيفاء القيود.
WorkManager.getInstance(context).enqueue(request)سياسة التراجع
عندما يعيد العامل retry()، ينتظر WorkManager قبل إعادة المحاولة. اضبط الاستراتيجية باستخدام setBackoffCriteria، مع اختيار تراجع خطي أو أُسّي.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setBackoffCriteria(
BackoffPolicy.EXPONENTIAL,
10, TimeUnit.SECONDS
)
.build()العمل الفريد
لتجنب جدولة مهام مكررة، استخدم enqueueUniqueWork مع اسم وسياسة تعارض (KEEP أو REPLACE أو APPEND).
WorkManager.getInstance(context).enqueueUniqueWork(
"sync_job",
ExistingWorkPolicy.KEEP,
request
)مراقبة حالة العمل
يمكنك مراقبة حالة الطلب (ENQUEUED أو RUNNING أو SUCCEEDED أو FAILED) عبر getWorkInfoByIdFlow أو LiveData، وهو أمر مفيد لعرض التقدم في واجهة المستخدم.
WorkManager.getInstance(context)
.getWorkInfoByIdFlow(request.id)
.collect { info -> /* react to info.state */ }إضافة العلامات
أضف علامات إلى الطلبات باستخدام addTag حتى تتمكن لاحقًا من الاستعلام عن مجموعات العمل المرتبطة أو إلغائها حسب العلامة، مثل إلغاء كل أعمال "upload" دفعة واحدة.
اختبار سريع
اختبر مدى فهمك للقيود والجدولة.
مراجعة
لقد جدولت عملًا مقيّدًا:
- يحدد
Constraints.Builderشروطًا مثل الشبكة والشحن - ينشئ
OneTimeWorkRequestBuilderالطلب - يرسل
enqueueأوenqueueUniqueWorkالطلب - اضبط التراجع، وراقب الحالة، وأضف علامات إلى العمل
التالي: العمل الدوري والمتسلسل.
الأسئلة الشائعة
هل درس «القيود والجدولة» مجاني؟
نعم — نص درس «القيود والجدولة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.
ماذا ستتعلم في «القيود والجدولة»؟
نفّذ العمل عند تحقق الشروط المناسبة تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟
لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «القيود والجدولة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟
نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- متى نستخدم WorkManager؟
- إنشاء Worker
- القيود والجدولة
- العمل الدوري والمتسلسل