android nougat中的作业调度程序未运行

时间:2018-02-06 17:50:52

标签: android android-7.0-nougat android-jobscheduler android-7.1-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;
        }

    }

1 个答案:

答案 0 :(得分:1)

可安排工作的最短时间为15分钟。这开始于Nougat。如果设置为小于15分钟的值,则作业将使用15分钟。

MIN_PERIOD_MILLIS

getMinPeriodMillis() copy&粘贴下面的功能描述

  

查询定期计划作业允许的最小间隔。在计划作业时尝试声明一个较小的句点将导致作业仍然是定期的,但将在此有效期内运行。