我有一份工作服务安排工作
JobInfo.Builder builder = new Builder(JOB_ID);
builder.setBackoffCriteria(/*initial 3 min*/ INI_TIME, /*increase exponential*/ JobInfo.BACKOFF_POLICY_EXPONENTIAL);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
我想将最长延迟设置为1天,以便在1天后取消作业,但不能满足所有要求。我正在考虑使用setOverrideDeadline(1d)
但它将在1天的截止日期前执行该作业。和setTriggerContentMaxDelay
的工作方式相同。实际上,我想知道setTriggerContentMaxDelay
和setOverrideDeadline
答案 0 :(得分:0)
setOverrideDeadline和setTriggerContentMaxDelay都不是您的方案中使用的正确方法。 setTriggerContentMaxDelay仅在使用addTriggerContentUri设置至少一个内容URI触发器时使用。
如果您想在24小时后取消作业,我只需使用AlarmManager设置闹钟,在24小时后使用JOB_ID取消作业。您可以使用以下方法检查作业是否存在:
JobScheduler mScheduler = (JobScheduler)
mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
for (JobInfo jobInfo : mScheduler.getAllPendingJobs()) {
if (jobID == jobInfo.getId()) {
// Cancel job
}
}
或者您可以在作业执行时取消闹钟。