gpt4 book ai didi

android - 在 Android 中使用 JobScheduler 调度作业

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:24 24 4
gpt4 key购买 nike

我在新的 Android API 21 中使用 JobScheduler 进行作业调度时遇到问题。这是我以 60 秒间隔安排作业的代码,如下所示:

ComponentName serviceName = new ComponentName(this, MyJobService.class);
JobInfo jobInfo = new JobInfo.Builder(0, serviceName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPeriodic(60000)
.build();

我的 JobService 只在 Logcat 中打印运行时间,但日志显示服务在这一刻运行:

03-18 08:37:26.334: I/JOB(32662): Wed Mar 18 08:37:26 BRT 2015
03-18 08:37:56.364: I/JOB(32662): Wed Mar 18 08:37:56 BRT 2015
03-18 08:39:21.418: I/JOB(32662): Wed Mar 18 08:39:21 BRT 2015
03-18 08:41:51.670: I/JOB(32662): Wed Mar 18 08:41:51 BRT 2015
03-18 08:45:52.192: I/JOB(32662): Wed Mar 18 08:45:52 BRT 2015
03-18 08:54:20.678: I/JOB(32662): Wed Mar 18 08:54:20 BRT 2015

这很奇怪,因为我用 setPeriodic(60000) 方法设置的 Job 应该在 1 分钟内至少执行 1 次。也很好奇运行之间的间隔是如何增加的。此时时间是 Wed Mar 18 09:09:00 BRT 2015 并且 Job 不再执行。

是不是JobScheduler API的问题? (我在 Nexus 5 和 Android 5.0.1 中运行)

最佳答案

时间更改与重试作业的退避条件有关。默认情况下,它设置为指数。我猜当您通过调用 jobFinished(JobParameters params, boolean needsReschedule) 完成工作时,您也没有正确完成工作。

我写了一个blog post它专注于 JobScheduler 的所有小事情。我强烈推荐阅读它。

关于android - 在 Android 中使用 JobScheduler 调度作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29121703/

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