【问题标题】:Android JobScheduler. Can I schedule job every 15 seconds安卓作业调度器。我可以每 15 秒安排一次工作吗
【发布时间】:2018-06-28 12:20:08
【问题描述】:

我的代码有效。但我不确定这是否会在所有设备上始终有效。 我可以这样使用 JobScheduler 吗?

启动方法:

public static void schedule() {
    JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);

    JobInfo job = new JobInfo.Builder(1, new ComponentName(context, MySchedulerService.class))
            .setMinimumLatency(15000)
            .build();

    scheduler.schedule(job);
}

服务:

public static class MySchedulerService extends JobService {

    public boolean onStartJob(JobParameters params) {
        schedule();
       /*   Business code   */
        stopSelf();
        return false;
    }

    public boolean onStopJob(JobParameters params) {
        return false;
    }
}

【问题讨论】:

    标签: android android-jobscheduler


    【解决方案1】:

    我可以每 15 秒安排一次作业吗

    没有。两个时间表之间的最短持续时间约为 15 分钟。您可以使用getMinPeriodMillis()轻松查询此信息

    注意:

    在安排作业时尝试声明比 this 更小的时间段 将产生一个仍然是周期性的作业,但会以此运行 有效期。

    对于setMinimumLatency,基于documentation

    在此之前不会考虑此作业的毫秒数 执行。

    这并不意味着该作业将在 15 秒后立即执行,并且在启动 first phase of doze 模式时从 Android N 将不可靠。

    【讨论】:

    • 我知道。因此,我使用了这个 hack。我每次都开始一项新任务。问题是,它可靠吗?
    • 我认为您尝试将时间段设置为 15 分钟以上是可行的。但就我而言,我安排了新任务。
    • 感谢您的回答,这对我来说真的很有帮助。关于 setMinimumLatency,在我的情况下没关系,如果打瞌睡没有完全杀死任务。
    • @DmitriyKholin 没问题。打盹模式将推迟作业并且不会杀死它。它只是不能保证您的作业将每 15 秒执行一次。如果您觉得回答有帮助,请记得标记为已接受,以便其他人也能受益。
    猜你喜欢
    • 2015-03-23
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    相关资源
    最近更新 更多