前のレッスンでは、JobIntentService
クラスの作成方法について説明しました。このレッスンでは、Intent
で作業をキューに登録することで、JobIntentService
をトリガーしてオペレーションを実行する方法について説明します。この Intent
には、必要に応じて JobIntentService
が処理するデータを含めることができます。
作業リクエストを作成して JobIntentService に送信する
処理リクエストを作成して JobIntentService
に送信するには、Intent
を作成し、
enqueueWork()
を呼び出して実行対象のキューに登録します。必要に応じて、JobIntentService が処理するデータをインテントに追加できます(インテント エクストラの形式で追加します)。インテントの作成方法については、インテントとインテント フィルタの「インテントを作成する」をご覧ください。
次のコード スニペットは、このプロセスを示しています。
-
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));
-
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
を使用してこれを行う方法を説明します。