设备重新启动后Android定期作业计划程序未运行

设备重新启动后Android定期作业计划程序未运行,android,android-jobscheduler,Android,Android Jobscheduler,我安排了一项定期工作,如下所示: ComponentName serviceComponent = new ComponentName(context, MyJobService.class); JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent); builder.setBackoffCriteria(15*60*1000, JobInfo.BACKOFF_P

我安排了一项定期工作,如下所示:

    ComponentName serviceComponent = new ComponentName(context, MyJobService.class);
            JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent);
            builder.setBackoffCriteria(15*60*1000, JobInfo.BACKOFF_POLICY_LINEAR);
            builder.setPeriodic(15*60*1000);
            builder.setPersisted(true);
            builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
            sendToScheduler(context,builder);

  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private static  void sendToScheduler(Context context, JobInfo.Builder builder ){

        JobScheduler jobScheduler = null;

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            jobScheduler = context.getSystemService(JobScheduler.class);
        }else{
            jobScheduler = (JobScheduler) context.getSystemService(context.JOB_SCHEDULER_SERVICE);
        }
        jobScheduler.schedule(builder.setPersisted(true).build());

    }
<service
            android:name=".jobs.MyJobService"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_JOB_SERVICE" />
其在舱单中的条目如下:

    ComponentName serviceComponent = new ComponentName(context, MyJobService.class);
            JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent);
            builder.setBackoffCriteria(15*60*1000, JobInfo.BACKOFF_POLICY_LINEAR);
            builder.setPeriodic(15*60*1000);
            builder.setPersisted(true);
            builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
            sendToScheduler(context,builder);

  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private static  void sendToScheduler(Context context, JobInfo.Builder builder ){

        JobScheduler jobScheduler = null;

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            jobScheduler = context.getSystemService(JobScheduler.class);
        }else{
            jobScheduler = (JobScheduler) context.getSystemService(context.JOB_SCHEDULER_SERVICE);
        }
        jobScheduler.schedule(builder.setPersisted(true).build());

    }
<service
            android:name=".jobs.MyJobService"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_JOB_SERVICE" />

在我的one plus 6设备上运行此代码后,我可以看到此作业没有运行。即使在设备重启15-30分钟后,我也没有得到任何启动作业的日志。我无法找出代码中的问题是什么

我希望这个答案会有所帮助:由于电池优化,BOOT_COMPLETED无法在一台以上的设备上工作。即使您请求忽略电池优化,它也会跳过该应用几分钟,并将该应用添加到电池优化列表中