Job Scheduler不会在Android 7.0(牛轧糖)

时间:2017-08-17 13:47:52

标签: android android-7.0-nougat

工作没有在给定时间内解雇......它延迟......延迟......延迟时间增加。我的要求是使用Android 7.0及更高版本中的Job Scheduler,每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;
  }

}

2 个答案:

答案 0 :(得分:2)

Android N(Nougat)中的

最短时间间隔为15分钟。将您的间隔设置为15分钟,然后代码将起作用。

并设置

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:    16.04
Codename:   xenial

Running as a VM under VMWare

答案 1 :(得分:0)

JobScheduler由Android操作系统优化,因此您的工作永远不会以您指定的完全间隔执行。

  

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

https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setPeriodic(long)