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>. Если задание с тем же идентификатором уже запланировано, оно будет заменено новым JobInfo, но все ранее помещенные в очередь работы останутся и будут отправлены при следующем запуске. Если задание с тем же идентификатором уже выполняется, новая работа будет помещена в очередь без остановки задания.

Работа, помещенная в очередь, будет позже извлечена с помощью JobParameters#dequeueWork() JobParameters.dequeueWork. Не забудьте увидеть там о том, как обработать работу; процесс постановки в очередь изменяет способ обработки всего жизненного цикла выполняемого задания.

Настоятельно рекомендуется использовать одинаковые JobInfo для всех работ, которые вы постановки в очередь. Это позволит системе оптимально планировать работу вместе с любой ожидающей и (или) выполняемой в настоящее время работой. Если jobInfo изменяется с момента последнего постановки задания в очередь, системе потребуется обновить связанный jobInfo, что может привести к нарушению выполнения. В частности, это может привести к остановке и перезапуску любого выполняющегося в данный момент задания, обрабатывающего предыдущие трудоемкие действия, с помощью нового JobInfo.

Рекомендуется избегать использования JobInfo.Builder#setExtras(PersistableBundle) или JobInfo.Builder#setTransientExtras(Bundle) с JobInfo, который используется для постановки в очередь. Система попытается сравнить эти дополнительные сведения с предыдущим JobInfo, но бывают ситуации, когда это может быть неправильно и считать JobInfo изменением. (При этом вы должны быть относительно в безопасности с простым набором согласованных данных в этих полях.) Никогда не следует использовать JobInfo.Builder#setClipData(ClipData, int) с работой по постановке в очередь, так как в настоящее время это всегда будет рассматриваться как другое jobInfo, даже если содержимое ClipData точно такое же.

<p class="предостережение"><strong Примечание.</strong> Планирование задания может иметь большие затраты, даже если оно перепланирует то же задание, а задание не было выполнено, особенно в версиях платформ до версии android.os.Build.VERSION_CODES#Q>. Таким образом, система может регулировать вызовы к этому API, если вызовы выполняются слишком часто в течение короткого периода времени.

<p class="предостережение"><strong>Примечание:</strong> До версии android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKEAndroid не удалось сохранить JobWorkItems. Приложениям не было разрешено ставить в очередь JobWorkItems с сохраненными заданиями, и система будет вызывать исключение , IllegalArgumentException если они попытаются сделать это. Начиная с android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE, JobWorkItems можно сохранять вместе с заданием размещения. Тем не менее, намерения не могут быть сохранены. Задайте параметр using PersistableBundleJobWorkItem.Builder#setExtras(PersistableBundle) для всех сведений, которые необходимо сохранить.

Примечание. Для успешного планирования задания необходимо включить компонент JobService.

Документация по Java для android.app.job.JobScheduler.enqueue(android.app.job.JobInfo, android.app.job.JobWorkItem).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Применяется к