如何在jobInfo中设置最长时间,以便在此之后取消作业?

时间:2018-05-04 19:18:29

标签: android-jobscheduler jobservice

我有一份工作服务安排工作

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的工作方式相同。实际上,我想知道setTriggerContentMaxDelaysetOverrideDeadline

之间的区别

1 个答案:

答案 0 :(得分:0)

setOverrideDeadlinesetTriggerContentMaxDelay都不是您的方案中使用的正确方法。 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
    }
}

或者您可以在作业执行时取消闹钟。