Да, у резервных заданий нет сроков переопределения, связанных с ними, и это включает в себя неявный крайний срок переопределения, установленный периодическими заданиями.

ользованиемJobSchedulerЯ установил простойJobService следующее:

@TargetApi(21)
public class SimpleJobService extends JobService {
    private static final String TAG = "SimpleJobService";

    @Override
    public boolean onStartJob(JobParameters jobParameters) {
        if (jobParameters.isOverrideDeadlineExpired()) {
            Log.d(TAG, "This shouldn't happen");
            Toast.makeText(this, "This shouldn't happen", Toast.LENGTH_LONG).show();
        }
        jobFinished(jobParameters, false);

        return true;
    }

    @Override
    public boolean onStopJob(JobParameters jobParameters) {
        return true;
    }
}

Затем я настраиваюJobService быть периодическим (каждую минуту) и требовать безлимитной сети и тарификации:

    ComponentName jobServiceComponent = new ComponentName(this, SimpleJobService.class);

    JobInfo.Builder builder = new JobInfo.Builder(2, jobServiceComponent);
    builder.setPersisted(true);
    builder.setPeriodic(60000);
    builder.setRequiresCharging(true);

    builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
    JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
    jobScheduler.schedule(builder.build());

onStartJob из моегоSimpleJobService вызывается независимо от того, заряжается ли мое устройство или нет.

Документация дляsetPeriodic(long) говорит, что его нельзя использовать вместе сsetOverrideDeadline(long) (и я не в любом случае), но я удивлен, чтоjobParameters.isOverrideDeadlineExpired() вonStartJob когда-либоtrue с этой настройкой.

Я что-то здесь упускаю?

Для меня это похоже на ошибку Android, но я удивлен, что не смог найти других людей, сообщающих об этой проблеме.

Такое поведение наблюдалось на Android 6.0.1

Ответы на вопрос(1)

Ваш ответ на вопрос