Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

バックグラウンド サービスに作業リクエストを送信する

前のレッスンでは、JobIntentService クラスを作成する方法について説明しました。このレッスンでは、Intent を使用して作業をキューに登録することで、JobIntentService をトリガーし、処理を実行する方法について説明します。必要に応じて、この Intent には、JobIntentService が処理するデータを追加することができます。

作業リクエストを作成して JobIntentService に送信する

作業リクエストを作成して JobIntentService に送信するには、Intent を作成し、enqueueWork() を呼び出して、実行用のキューに登録します。必要に応じて、JobIntentService が処理するデータをインテントに追加できます(インテント エクストラの形式で追加します)。インテントの作成方法については、インテントとインテント フィルタの「インテントを作成する」をご覧ください。

このプロセスを下記のコード スニペットに示します。

  1. RSSPullService という名の JobIntentService 用の新しい Intent を作成します。

    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 を使用してこの処理を実行する方法について説明します。