將工作要求傳送給背景服務

先前的課程介紹了 JobIntentService 類別。這個 本課程將說明如何觸發 JobIntentService 來執行 使用 Intent 將工作排入佇列。 這個Intent可以 視需要納入 JobIntentService 來處理工作。

建立工作要求並傳送至 JobIntentService

如何建立工作要求並傳送至 JobIntentService、 建立 Intent 並排入佇列 執行時,系統會呼叫 enqueueWork()。 您也可以選擇將相關資料新增至意圖 (以意圖額外項目的形式), 要處理的 JobIntentService。如要進一步瞭解如何建立意圖,請參閱 意圖和意圖篩選器中的意圖區段

下列程式碼片段可說明這個程序:

  1. Intent JobIntentServiceRSSPullService」。

    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);
    

請注意,您可以從 Activity 或 Fragment 中的任一處傳送工作要求。 舉例來說,如需先取得使用者輸入內容,您可以透過回呼傳送要求 回應按鈕點選或類似手勢。

當您呼叫 之後 enqueueWork(), JobIntentService 會執行其中定義的工作 onHandleWork() 方法,然後自行停止。

下一步是將工作要求的結果回報給原始 Activity 或 Fragment下一堂課將說明如何透過 BroadcastReceiver