次の方法で共有


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

定義

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

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

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

作業のエンキューに使用している JobInfo を使用 JobInfo.Builder#setExtras(PersistableBundle) または JobInfo.Builder#setTransientExtras(Bundle) 使用しないことをお勧めします。 システムは、これらの追加要素を以前の 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 必要がある情報の使用 JobWorkItem.Builder#setExtras(PersistableBundle) を設定します。

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

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

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

適用対象