JobScheduler.Enqueue(JobInfo, JobWorkItem) メソッド

定義

#schedule似ていますが、新しい <em>または既存<の/em> ジョブの作業をエンキューできます。

[Android.Runtime.Register("enqueue", "(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I", "GetEnqueue_Landroid_app_job_JobInfo_Landroid_app_job_JobWorkItem_Handler", ApiSince=26)]
public abstract int Enqueue (Android.App.Job.JobInfo job, Android.App.Job.JobWorkItem work);
[<Android.Runtime.Register("enqueue", "(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I", "GetEnqueue_Landroid_app_job_JobInfo_Landroid_app_job_JobWorkItem_Handler", ApiSince=26)>]
abstract member Enqueue : Android.App.Job.JobInfo * Android.App.Job.JobWorkItem -> int

パラメーター

job
JobInfo

エンキューするジョブが対象です。 スケジュールできるジョブの種類の詳細については、「」を参照してください android.app.job.JobInfo.Builder JobInfo.Builder

work
JobWorkItem

エンキューする新しい作業。 これは、ジョブの実行が開始されたときに後で使用できます。

戻り値

エンキュー要求の結果。

属性

注釈

#schedule似ていますが、新しい <em>または既存<の/em> ジョブの作業をエンキューできます。 同じ ID のジョブが既にスケジュールされている場合は、新しい JobInfoに置き換えられますが、以前にエンキューされた作業はすべて残り、次回の実行時にディスパッチされます。 同じ ID のジョブが既に実行されている場合は、ジョブを停止せずに新しい作業がエンキューされます。

エンキューする作業は、後で を通じて JobParameters#dequeueWork() JobParameters.dequeueWork取得されます。 作業を処理する方法については、必ず確認してください。作業をエンキューする操作によって、実行中のジョブの全体的なライフサイクルを処理する方法が変わります。

エンキューするすべての作業で同じもの JobInfo を使用することを強くお勧めします。 これにより、システムは保留中の作業や現在実行中の作業と共に作業を最適にスケジュールできます。 ジョブが前回エンキューされた時刻から JobInfo が変更された場合、システムは関連する JobInfo を更新する必要があります。これにより、実行が中断する可能性があります。 特に、以前の作業を処理している現在実行中のジョブが、新しい JobInfo で停止および再起動される可能性があります。

作業をエンキューするために使用する JobInfo で または JobInfo.Builder#setTransientExtras(Bundle) を使用JobInfo.Builder#setExtras(PersistableBundle)しないようにすることをお勧めします。 システムは、これらの追加機能を以前の JobInfo と比較しようとしますが、この問題が発生し、JobInfo が変化したとカウントされる場合があります。 (つまり、これらのフィールドには、一貫性のあるデータの単純なセットを使用して比較的安全である必要があります。現在、ClipData の内容がまったく同じであっても、これは常に別の JobInfo として扱われるため、エンキューする作業では使用 JobInfo.Builder#setClipData(ClipData, int) しないでください。

<p class="caution"><strong>Note:</strong> Scheduling a job can have high cost, even it's rescheduling the same job and the job didn't execute, especially on platform versions before version android.os.Build.VERSION_CODES#Q. そのため、短時間で呼び出しが頻繁に行われすぎると、システムによってこの API の呼び出しがスロットルされる可能性があります。

<p class="caution"><strong>Note:</strong> Android バージョン android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKEより前のバージョンでは、JobWorkItems を永続化できませんでした。 アプリは、永続化されたジョブを使用して JobWorkItems をエンキューすることは許可されておらず、それを試みた場合、システムは を IllegalArgumentException スローします。 以降では android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE、JobWorkItems はホスティング ジョブと共に永続化できます。 ただし、意図を保持することはできません。 永続化する PersistableBundle 必要がある情報の using JobWorkItem.Builder#setExtras(PersistableBundle) を設定します。

注: ジョブを正常にスケジュールするには、JobService コンポーネントを有効にする必要があります。

の Java ドキュメント android.app.job.JobScheduler.enqueue(android.app.job.JobInfo, android.app.job.JobWorkItem)

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象