我有两个具有不同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()。
观察到的一种情况是,我的作业正在网络之间执行,该作业关闭并且当前作业已停止。之后,在下一个计划中,作业被触发两次。任何帮助都将非常感谢。
道歉而不是评论,但系统不允许我发表评论。
您是否找到解决该问题的方法?我似乎也有同样的经历。