gpt4 book ai didi

java - 作业调度程序的作业调度不一致

转载 作者:行者123 更新时间:2023-11-30 00:26:34 25 4
gpt4 key购买 nike

我使用作业调度程序在任何时间间隔发送通知,比如定期发送 4 分钟,所以我使用了

setPeriodic(duration * 60 * 1000); //duration is 4 minutes

但它首先不一致,它先在 1 分钟或 2 分钟后发送通知,然后是 1 分钟,然后是 4 分钟,然后是 8 分钟,我猜它还缓存了之前的持续时间,这是我实现代码的方式:

    public static void Scheduler(Context context){

ComponentName componentName = new
ComponentName(context, ClsJobService.class);

JobInfo.Builder builder = new JobInfo.Builder(0, componentName)

.setPeriodic(duration * 60 * 1000);
JobScheduler jobScheduler = (JobScheduler)
context.getSystemService (Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());

}

最佳答案

您在 Android L 上使用 JobScheduler 以 4 分钟为间隔安排了一个作业。一旦按周期安排,此作业在您设置的间隔内的任何时间只能运行一次(开始:您调用 schedule() 的时间,结束:加 4 分钟)。并且它只会在完成已运行的间隔后再次运行,仅在新范围内....此行为将继续,直到您取消作业。

e.g: the job was scheduled for 4 minutes as periodic, and 1 minute later it was executed; This job will be run again after 3 minutes, according to the 4 minutes range. In new range, it can execute at any time within 4 min.

如果您不希望 JobScheduler 出现这种周期性行为,请考虑使用 AlarmManager 服务安排您的作业每 4 分钟触发一次通知,并在触发通知后重新安排.

Obs.: JobScheduler 在内部使用 AlarmManager 服务来安排需要安排的作业,定义开始和结束时间运行这个作业。

Android L source code references:

关于java - 作业调度程序的作业调度不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com