مجدول مهام Kotlin: kotlinx.coroutines ومكتبات المهام الخلفية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مجدول المهام في Kotlin: من الكوروتينات إلى الحلول المؤسسية



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



سننظر في ثلاثة أساليب رئيسية:



  • الأدوات المضمنة Kotlin Coroutines (الخيوط الخفيفة)
  • مكتبة WorkManager لنظام Android
  • المجدول الكلاسيكي Quartz Scheduler مع أغلفة Kotlin


1. مجدول يعتمد على kotlinx.coroutines



kotlinx.coroutines هي مكتبة قياسية للبرمجة غير المتزامنة في Kotlin. توفر أدوات قوية لإنشاء المهام المؤجلة والدورية.



المكونات الرئيسية:

  • delay() — تأخير تنفيذ الكوروتين
  • launch و async — بدء الكوروتينات
  • CoroutineScope — إدارة دورة الحياة
  • Dispatchers — اختيار خيط التنفيذ


مثال على مجدول مهام بسيط مع التكرار كل 5 ثوانٍ:



import kotlinx.coroutines.*

fun main() = runBlocking { val job = launch { repeat(10) { i -> println("تم تنفيذ المهمة #$i في ${System.currentTimeMillis()}") delay(5000) // توقف لمدة 5 ثوانٍ } } job.join() println("المجدول أنهى العمل")}


للسيناريوهات الأكثر تعقيدًا (إلغاء المهام، معالجة الأخطاء، تحديد التكرار)، استخدم Job و SupervisorJob:



val scope = CoroutineScope(Dispatchers.Default + SupervisorJob())

fun schedulePeriodicTask(intervalMs: Long, action: suspend () -> Unit): Job { return scope.launch { while (isActive) { try { action() } catch (e: Exception) { println("خطأ: ${e.message}") } delay(intervalMs) } }}

// الاستخدامval task = schedulePeriodicTask(2000) { println("المهمة الخلفية قيد التنفيذ...")}

// الإلغاء بعد 10 ثوانٍscope.launch { delay(10000) task.cancel() println("تم إلغاء المهمة")}


المزايا: خفة الوزن، دعم مدمج للإلغاء، التكامل مع نظام Kotlin البيئي. العيوب: غير مناسب لتطبيقات Android التي يجب أن تتحمل إعادة تشغيل النظام.



2. WorkManager لنظام Android (Kotlin)



WorkManager هي مكتبة من Google لتنفيذ المهام المؤجلة والخلفية في Android، حتى بعد إغلاق التطبيق أو إعادة تشغيل الجهاز. تعمل فوق الكوروتينات.



الخطوات الرئيسية:

  1. إنشاء فئة ترث من CoroutineWorker
  2. تنفيذ الطريقة doWork()
  3. تكوين WorkRequest (لمرة واحدة أو دوري)
  4. وضع المهمة في قائمة الانتظار عبر WorkManager


مثال على مهمة دورية:



class MyPeriodicWorker(context: Context, params: WorkerParameters) :     CoroutineWorker(context, params) {

override suspend fun doWork(): Result { return try { // مهمتك: مزامنة، تنظيف، إلخ. println("تم تنفيذ المهمة الدورية في ${System.currentTimeMillis()}") Result.success() } catch (e: Exception) { Result.retry() } }}

// الإعداد والتشغيلval constraints = Constraints.Builder() .setRequiredNetworkType(NetworkType.CONNECTED) .build()

val periodicRequest = PeriodicWorkRequestBuilder&

توصيات