onC*_*ate 11 android android-jobscheduler
我正在尝试使用新的JobScheduler实现后台刷新服务(compat by 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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的JobInfo
public void scheduleJob(View v) {
JobInfo job = new JobInfo.Builder(kJobId++ /*jobid*/, new ComponentName(getActivity(), RefreshJobService.class))
.setPeriodic(2000)
.build();
mTestService.scheduleJob(job);
}
Run Code Online (Sandbox Code Playgroud)
在日志中我看到我的工作总是工作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
所以为什么?我定期设置为2000ms,任何值都不会影响1分钟的工作间隔.为什么?
onStopJob当系统想要取消你的工作时调用.它取消你的工作的原因是因为它认为它仍在运行.您需要jobFinished(params, bool)在工作中的某个时刻打电话告诉调度程序它已完成,否则它会超时并致电onStopJob取消它.另外,返回'true'会onStartJob告诉系统你没有完成处理.你应该返回'假',除非你还在做额外的工作,例如.将工作传递给一个单独的线程.
@Override
public boolean onStartJob(JobParameters params) {
Timber.i("on start job: " + params.getJobId());
jobFinished(params, false);
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4807 次 |
| 最近记录: |