2017-08-17 118 views
0

作业在给定时间内没有发射......它延迟了......延迟......延迟时间增加。我的要求是无论使用Android 7.0或更高版本的Job Scheduler每10分钟执行一次工作。 这里我的代码片断Job Scheduler在Android 7.0(牛轧糖)中不定期发生

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; 
    } 

} 
+0

是否有任何其他的方式来实现在Android 6.0及更高版本在Android 7.0 –

+1

此功能与打盹模式,你可以做一些事情的唯一途径这通常是当用户添加了您应用程序到电池优化白名单。并非每个用户都会这样做。 – CommonsWare

+0

@CommonsWare在6.0它工作正常..但在7.0它不 –

回答

0

的的jobscheduler优化由Android操作系统,为此你的工作绝不会在您指定的确切间隔执行。

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

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

+0

是否有任何其他方式来实现Android 7.0上的此功能.. –

+0

我不完全确定,但我想用AlarmManager你可以注册一个确切的间隔 – Piwo

+0

报警管理器也不能在深度睡眠模式下工作...在Android 7.0中,而不是Alarm Manager中有Job Scheduler ... https://developer.android.com/about/versions/nougat/android-7.0-changes html的 –

0
Android中Ñ

(牛轧糖)的最小周期时间间隔为15分钟。将您的间隔设置为15分钟,然后代码将起作用。

,还可以设置

jobFinished(parameters, false);