Android JobScheduler запускается несколько раз, если условие не выполнено - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь создать JobScheduler, который периодически запускается с интервалом в 15 минут. критерий для запуска задания - сетевое соединение. проблема заключается в том, что когда критерии не выполняются за один интервал, например, Интернет не подключен, это невыполненное задание выполняется в следующем интервале, сразу же после следующего запланированного задания. например, если я отключаю соединение WiFi на 30 минут, при включении я сразу получаю 2 выхода. очевидно, это не логичное поведение. в чем проблема?

        JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
    ComponentName jobService = new ComponentName(this, LoggingService.class);
    JobInfo jobInfo = new JobInfo.Builder(110, jobService).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).
            setPeriodic(15 * 60 * 1000).build();
    jobScheduler.cancelAll();
    jobScheduler.schedule(jobInfo);

и

    @Override
public boolean onStartJob(JobParameters params) {

    Executors.newSingleThreadExecutor().execute(new Runnable() {
        @Override
        public void run() {
Log.i("log","running job!");
jobFinished(params,false);
        }
    });

    return true;
}

@Override
public boolean onStopJob(JobParameters params) {
    return false;
}
...