Планировщик заданий в Android Nougat не работает

Я пытаюсь запустить планировщик заданий каждые 3 секунды, но он не работает на Android Noughat. Вот мой код.

     mJobScheduler = (JobScheduler) getSystemService( Context.JOB_SCHEDULER_SERVICE );
     JobInfo.Builder builder = new JobInfo.Builder( 1,
                            new ComponentName( getPackageName(), JobSchedulerService.class.getName() ) );


                  builder.setPeriodic(3000);
                    builder.setRequiresDeviceIdle(false);
                    builder.setPersisted(true);
                    JobInfo j=builder.build();
                    mJobScheduler.schedule(j);

Служба планирования заданий, содержащая код, который должен выполняться для заданий.

       public class JobSchedulerService extends JobService {

        private Handler mJobHandler = new Handler( new Handler.Callback() {
            @Override
            public boolean handleMessage( Message msg ) {
                Toast.makeText( getApplicationContext(), "JobService task running", Toast.LENGTH_SHORT ).show();
                jobFinished( (JobParameters) msg.obj, false );
                return true;
            }
        } );

        @Override
        public boolean onStartJob(JobParameters params ) {
        //    Toast.makeText( getApplicationContext(), "kutta", Toast.LENGTH_SHORT ).show();
            mJobHandler.sendMessage( Message.obtain( mJobHandler, 1, params ) );
            return true;
        }

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

    }

person vipul bansal    schedule 06.02.2018    source источник
comment
Скорее всего, там минимальный период в минуту. AlarmManager имеет такое ограничение.   -  person CommonsWare    schedule 06.02.2018
comment
Нет, проблема в том, что он работает на Android Marshmallow.   -  person vipul bansal    schedule 06.02.2018


Ответы (1)


Минимальный период, на который может быть запланирована работа, составляет 15 минут. Это началось с Нуги. Если установлено значение менее 15 минут, задание будет использовать 15 минут.

MIN_PERIOD_MILLIS

getMinPeriodMillis() скопируйте и вставьте описание функции ниже

Запросите минимальный интервал, разрешенный для периодических запланированных заданий. Попытка объявить меньший период при планировании задания приведет к тому, что задание все еще будет периодическим, но будет выполняться с этим эффективным периодом.

person Steve Miskovetz    schedule 07.02.2018
comment
Но относится ли это ограничение также к диспетчеру заданий firebase? - person vipul bansal; 08.02.2018
comment
Диспетчер заданий firebase не использует это ограничение, потому что он использует компонент планирования в сервисах Google Play. Я не знаком с ограничениями расписания в сервисах Google Play. Новый вопрос, специфичный для диспетчера заданий firebase, может дать вам ответ или некоторые эксперименты с этой библиотекой. - person Steve Miskovetz; 08.02.2018