1

我有一个 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工作相同。其实我想知道和之间的setTriggerContentMaxDelay区别setOverrideDeadline

4

1 回答 1

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
    }
}

或者您可以在作业执行时取消警报。

于 2018-05-13T00:06:14.180 回答