إرسال طلبات العمل إلى الخدمة التي تعمل في الخلفية

شرح لك الدرس السابق كيفية إنشاء صف في JobIntentService. يشرح هذا الدرس كيفية تشغيل JobIntentService لتنفيذ عملية من خلال إضافة العمل إلى قائمة الانتظار باستخدام Intent. يمكن أن تتضمّن سمة Intent هذه اختياريًا بيانات لمعالجة JobIntentService.

إنشاء طلب عمل وإرساله إلى JobIntentService

لإنشاء طلب عمل وإرساله إلى JobIntentService، أنشئ Intent وأدرجه في قائمة الانتظار ل ejecutang من خلال الاتصال enqueueWork(). يمكنك اختياريًا إضافة بيانات إلى النية (في شكل عناصر إضافية للنية) لمعالجتها في JobIntentService. لمزيد من المعلومات عن إنشاء النوايا، يُرجى قراءة قسم "إنشاء نوايا" في مقالة النوايا وفلاتر النوايا.

وتوضح مقتطفات الرمز التالية هذه العملية:

  1. أنشئ Intent جديدًا لمحاولة JobIntentService تُسمى RSSPullService.

    Kotlin

    /*
     * Creates a new Intent to start the RSSPullService
     * JobIntentService. Passes a URI in the
     * Intent's "data" field.
     */
    serviceIntent = Intent().apply {
        putExtra("download_url", dataUrl)
    }
    

    Java

    /*
     * Creates a new Intent to start the RSSPullService
     * JobIntentService. Passes a URI in the
     * Intent's "data" field.
     */
    serviceIntent = new Intent();
    serviceIntent.putExtra("download_url", dataUrl));
    
  2. الاتصال برقم enqueueWork()

    Kotlin

    private const val RSS_JOB_ID = 1000
    RSSPullService.enqueueWork(context, RSSPullService::class.java, RSS_JOB_ID, serviceIntent)
    

    Java

    // Starts the JobIntentService
    private static final int RSS_JOB_ID = 1000;
    RSSPullService.enqueueWork(getContext(), RSSPullService.class, RSS_JOB_ID, serviceIntent);
    

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

بعد استدعاء enqueueWork()، تنجز JobIntentService المهمة المحددة في طريقة onHandleWork()، ثم تتوقف تلقائيًا.

الخطوة التالية هي الإبلاغ عن نتائج طلب العمل إلى النشاط المنشأ أو المقتطف. يوضّح لك الدرس التالي كيفية إجراء ذلك باستخدام BroadcastReceiver.