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

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

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

لإنشاء طلب عمل وإرساله إلى JobIntentService، يمكنك إنشاء Intent وإدراجه في قائمة الانتظار ليتم تنفيذه من خلال طلب 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.