2017-08-17 51 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); 
相關問題