JobScheduler.Enqueue(JobInfo, JobWorkItem) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
に #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 コンポーネントを有効にする必要があります。
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。