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.Builder#setExtras(PersistableBundle)
或 JobInfo.Builder#setTransientExtras(Bundle)
与 JobInfo 一起使用,以便排队工作。 系统将尝试将这些额外项与以前的 JobInfo 进行比较,但在某些情况下,可能会出错,并将 JobInfo 计数为更改。 (也就是说,你应该相对安全,在这些字段中有一组简单的一致数据。不应用于 JobInfo.Builder#setClipData(ClipData, int)
排队的工作,因为目前这始终被视为不同的 JobInfo,即使 ClipData 内容完全相同。
<p class=“warning”><strong Note:</strong>> Schedule a job can have a high cost, if it's reschuling the same job and the job't execute, especially on platform versions before versionandroid.os.Build.VERSION_CODES#Q
. 因此,如果调用在短时间内过于频繁,系统可能会限制对此 API 的调用。
<p class=“warning”><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 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。