【发布时间】:2014-12-31 09:45:34
【问题描述】:
我正在尝试使用新的 JobScheduler(由 tatarka 兼容)来实现后台刷新服务。 这是我的服务
@Override
public boolean onStartJob(JobParameters params) {
Timber.i("on start job: " + params.getJobId());
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Timber.i("on stop job: " + params.getJobId());
return true;
}
这是我的工作信息
public void scheduleJob(View v) {
JobInfo job = new JobInfo.Builder(kJobId++ /*jobid*/, new ComponentName(getActivity(), RefreshJobService.class))
.setPeriodic(2000)
.build();
mTestService.scheduleJob(job);
}
在日志中我看到我的工作总是工作 1 分钟
12-31 12:38:03.884 10059-10059/@/RefreshJobService﹕ on stop job: 0
12-31 12:39:03.891 10059-10059/@/RefreshJobService﹕ on start job: 0
12-31 12:40:03.911 10059-10059/@/RefreshJobService﹕ on stop job: 0
12-31 12:42:08.841 10059-10059/@/RefreshJobService﹕ on start job: 0
12-31 12:43:08.858 10059-10059/@/RefreshJobService﹕ on stop job: 0
那为什么?我将周期设置为 2000 毫秒,任何值都不会影响工作的 1 分钟间隔。为什么?
【问题讨论】:
-
你知道这是为什么吗?
-
@Papajohn000 不,我没有。
-
我不知道它是否仍然相关,但作业调度程序可能有最短时间限制。我知道警报管理器的最低限度是 2 分钟。
-
JobScheduler真的不适合这么短的时间间隔。每隔几个小时刷新一次。在您的应用中使用Handler.postDelayed或类似名称。
标签: android android-jobscheduler