JobScheduler 调用onStartJob()
多次,虽然工作完成了。如果我安排一项工作并等到它完成,一切都会很好。但是,如果我同时安排两个或多个具有不同ID的作业,那么onStartJob()
调用后再次调用jobFinished()
.
例如我安排作业1和作业2使用除了ID之外完全相同的参数,那么顺序是:
-
onStartJob()
对于工作 1 和工作 2
- 两项工作都完成了,所以
jobFinished()
为他们俩调用
- 在那之后
onStartJob()
再次调用具有相同 ID 的两个作业
我的工作很基础,并不复杂。
public class MyJobService extends JobService {
@Override
public boolean onStartJob(final JobParameters params) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// do something
} finally {
// do not reschedule
jobFinished(params, false);
}
}
}).start();
// yes, job running in the background
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
// mark my background task as stopped
// do not reschedule
return false;
}
}
我这样安排工作
JobInfo jobInfo = createBaseBuilder(request)
.setMinimumLatency(2_000L)
.setOverrideDeadline(4_000L)
.setRequiresCharging(false)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.build();
int scheduleResult = mJobScheduler.schedule(jobInfo);
// is always success
我不知道出了什么问题。
我猜这是由待处理的作业引起的,所以我在服务启动后调用 mJobScheduler.cancelAll() ,问题解决了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)