Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 7.0(Nougat)中的作业调度程序不定期重复出现_Android_Android 7.0 Nougat - Fatal编程技术网

Android 7.0(Nougat)中的作业调度程序不定期重复出现

Android 7.0(Nougat)中的作业调度程序不定期重复出现,android,android-7.0-nougat,Android,Android 7.0 Nougat,作业未在给定时间触发…它延迟…延迟…延迟时间增加。我的要求是使用Android 7.0及以上版本中的作业调度器,每10分钟执行一次作业。 这里是我的代码片段 private static long Scheduler_Interval = 5 * DateUtils.MINUTE_IN_MILLIS; JobScheduler mJobScheduler mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_

作业未在给定时间触发…它延迟…延迟…延迟时间增加。我的要求是使用Android 7.0及以上版本中的作业调度器,每10分钟执行一次作业。 这里是我的代码片段

private static long Scheduler_Interval = 5 * DateUtils.MINUTE_IN_MILLIS;

JobScheduler mJobScheduler mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);

            JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(getPackageName(), JobSchedulerService.class.getName()));
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                builder.setPeriodic(Scheduler_Interval, 1 * DateUtils.MINUTE_IN_MILLIS);
            }
            builder.setRequiresDeviceIdle(false);

            if (mJobScheduler.schedule(builder.build()) <= 0) {
                ShowToast("Some error while scheduling the job");
            }


public class JobSchedulerService extends JobService {
 @Override
  public boolean onStartJob(JobParameters jobParameters) {
      writeToTestLogFile(GetSavedDateFromLocationProvider()+ "|onStartJob");
      return false;
  }

  @Override
  public boolean onStopJob(JobParameters jobParameters) {
      writeToTestLogFile(GetSavedDateFromLocationProvider()+ "|onStopJob");
     return false;
  }

}
private static long Scheduler\u Interval=5*DateUtils.MINUTE\u(单位:毫秒);
JobScheduler mJobScheduler=(JobScheduler)getSystemService(Context.JOB\u SCHEDULER\u SERVICE);
JobInfo.Builder=new JobInfo.Builder(1,新组件名(getPackageName(),JobSchedulerService.class.getName());
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.N){
builder.setPeriodic(调度程序时间间隔,1*DateUtils.MINUTE,单位:毫秒);
}
builder.setRequiresDeviceIdle(false);

如果(mJobScheduler.schedule(builder.build())作业调度器是由Android操作系统优化的,因此您的作业永远不会在指定的精确的间隔执行

指定此作业应按提供的间隔重复,每个周期不超过一次。您无法控制在此间隔内何时执行此作业,只能保证在此间隔内最多执行一次

在Android N(牛轧糖)中,最短周期间隔为15分钟。将间隔设置为15分钟,代码将正常工作

而且还设置了

jobFinished(parameters, false);

我不完全确定,但我想你可以使用AlarmManager注册一个确切的间隔Alarm manager也不能在深度睡眠模式下工作…在Android 7.0中,而不是Alarm manager中,有作业调度程序…在Android 7.0上,有没有其他方法实现此功能?在Android 6.0+上,有没有唯一的方法可以实现此功能通常情况下,如果用户将应用程序添加到电池优化白名单中。并不是每个用户都会这样做。@Commonware在6.0中工作正常。但在7.0中,我们不需要调用jobFinished(参数,false);也用于定期任务?@ShishirShetty Yesaah bug未找到。在代码中找到它。
/*定期作业的最小间隔,以毫秒为单位。*/private static final long MIN_PERIOD_MILLIS=15*60*1000L;//15分钟
。无论如何,这应该是公认的答案。