बैकग्राउंड में चलने वाली सेवा को काम के अनुरोध भेजें

पिछले लेख में, JobIntentService क्लास बनाने का तरीका बताया गया था. इस लेसन में, Intent की मदद से किसी काम को सूची में जोड़कर, ऑपरेशन चलाने के लिए JobIntentService को ट्रिगर करने का तरीका बताया गया है. इस Intent में, JobIntentService को प्रोसेस करने के लिए डेटा शामिल किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.

JobIntentService को कोई काम करने का अनुरोध बनाना और भेजना

काम का अनुरोध करने और उसे JobIntentService को भेजने के लिए, एक Intent बनाएं और enqueueWork() को कॉल करके, उसे एक्ज़ीक्यूट करने के लिए पंक्ति में जोड़ें. इसके अलावा, आपके पास JobIntentService को प्रोसेस करने के लिए इंटेंट में डेटा जोड़ने का विकल्प है. इंटेंट एक्स्ट्रा के तौर पर ऐसा किया जा सकता है. इंटेंट बनाने के बारे में ज़्यादा जानकारी के लिए, इंटेंट और इंटेंट फ़िल्टर में इंटेंट बनाना सेक्शन पढ़ें

यहां दिए गए कोड स्निपेट से इस प्रोसेस के बारे में पता चलता है:

  1. RSSPullService नाम का एक नया Intent बनाएं, जो JobIntentService के लिए है.

    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 के साथ ऐसा करने का तरीका बताया गया है.