我有两个具有不同ID的作业以不同的时间间隔运行,发生的情况是在一定时间后两次触发作业。
以下是两个工作
public JobScheduler getDeltaDownloaderInstance(Context context){
if(jobScheduler==null){
jobScheduler = (JobScheduler)context.getSystemService(JOB_SCHEDULER_SERVICE);
}
return jobScheduler;
}
public void sync1(){
getDeltaDownloaderInstance(this);
ComponentName jobService = new ComponentName(this.getPackageName(), MyServiceOne.class.getName());
JobInfo jobInfo = new JobInfo.Builder(1,jobService).
setPersisted(true).
setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).
setPeriodic(900000).
build();
jobScheduler.schedule(jobInfo);
}
public void sync2(){
getDeltaDownloaderInstance(this);
ComponentName jobService = new ComponentName(this.getPackageName(), MyServiceTwo.class.getName());
JobInfo jobInfo = new JobInfo.Builder(2,jobService).
setPersisted(true).
setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).
setPeriodic(1860000).
build();
jobScheduler.schedule(jobInfo);
}
以上初始化是在我的Application类中编写的,每15分钟执行一次第一个作业,每31分钟执行一次我的第二个作业。有时它可以正常工作,但是稍后一项工作将有两个实例。
服务等级一(服务等级一和两个都具有相同的实现)
public class MyServiceOne extends JobService implements MyListenerClass {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public boolean onStartJob(JobParameters params) {
HelperclassOne helper = new HelperclassOne(this,this);
helper.somemethods();
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
@Override
public void onSuccess(String response) {
System.out.println(response);
}
@Override
public void onError(String response) {
System.out.println(response);
}
}
在我的服务类中,如果事务成功,则调用助手类执行一些方法以调用某些事务,然后调用onSuccess();如果发生错误,则调用onError()。
观察到一种情况,其中我的作业在网络之间执行,该作业关闭并且当前作业已停止。稍后,在下一个计划中,作业将触发两次。 任何帮助都将非常感谢。