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_CAKE
Android не удалось сохранить JobWorkItems. Приложениям не было разрешено ставить в очередь JobWorkItems с сохраненными заданиями, и система будет вызывать исключение , IllegalArgumentException
если они попытаются сделать это. Начиная с android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE
, JobWorkItems можно сохранять вместе с заданием размещения. Тем не менее, намерения не могут быть сохранены. Задайте параметр using PersistableBundle
JobWorkItem.Builder#setExtras(PersistableBundle)
для всех сведений, которые необходимо сохранить.
Примечание. Для успешного планирования задания необходимо включить компонент JobService.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.