У меня есть две работы с разными идентификаторами, выполняющимися с разным набором интервалов, что происходит, когда через определенное время задания запускаются дважды.
следующие два задания
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 ().
Наблюдался один сценарий, когда мои задания выполняются междусеть отключается и текущая работа останавливается.Позже, в следующем графике, задания запускаются дважды.Любая помощь будет большой благодарностью.