2016-06-14 2 views
1

Я замечаю, что когда я планирую работу, выполняемую с JobScheduler, всегда появляется как минимум 10-минутная задержка, прежде чем она начнет работу в первый раз. Кто-нибудь знает, почему? Сегодня я начал копаться в коде, но я не нашел причины. Я все еще смотрю, но я решил, что спрошу.Задержка перед тем, как JobScheduler выполняет работу в первый раз?

public class MainActivity extends AppCompatActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 


      Log.d("XXX", "Scheduling MyJobService to run."); 
      ComponentName serviceName = new ComponentName(this, MyJobService.class); 
      JobInfo job = new JobInfo.Builder(MyJobService.JOB_ID, serviceName) 
        .setBackoffCriteria(TimeUnit.SECONDS.toMillis(30), JobInfo.BACKOFF_POLICY_LINEAR) 
        .setPeriodic(TimeUnit.SECONDS.toMillis(5)) 
        .build(); 
      JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); 
      scheduler.cancel(MyJobService.JOB_ID); 
      scheduler.schedule(job); 
     } 
    } 

    public class MyJobService extends JobService { 

     public final static int JOB_ID = 1000; 

     @Override 
     public boolean onStartJob(JobParameters params) { 
      Log.d("XXX", "Job started"); 
      jobFinished(params, true); 
      return true; 
     } 

     @Override 
     public boolean onStopJob(JobParameters params) { 
      return true; 
     } 
    } 

Вот вывод, который я дважды перезапускал свое тестовое приложение.

06-14 16:53:00.335 29024-29024/com.example.jobschedulertest.jobschedulertest D/XXX: Scheduling MyJobService to run. 
06-14 17:03:17.173 29024-29024/com.example.jobschedulertest.jobschedulertest D/XXX: Job started 
06-14 17:12:05.158 31668-31668/com.example.jobschedulertest.jobschedulertest D/XXX: Scheduling MyJobService to run. 
06-14 17:22:07.280 31668-31668/com.example.jobschedulertest.jobschedulertest D/XXX: Job started 

Я бегу Android N Предварительный релиз 4 на Nexus 6.

+0

Вы получите идеальное решение для этого? Даже я столкнулся с тем же вопросом –

+0

Я считаю, что это связано с оптимизацией доз, поэтому решение не доступно. – TALE

ответ

0

Я считаю, что это то, что было добавлено в Android N. Когда они выпускают код, я уверен, что я буду способный видеть, что вызывает задержку. Скорее всего, это связано с оптимизацией «Doze».

Я тестировал на Nexus 6p и Moto X Pure, оба работали с Зефиром. Оба устройства работали почти сразу.

С Nexus 6P

06-16 14:55:03.045 13459-13459/com.example.jobschedulertest.jobschedulertest D/XXX: Scheduling MyJobService to run. 
06-16 14:55:08.069 13459-13459/com.example.jobschedulertest.jobschedulertest D/XXX: Job started 

Из Moto X Pure

06-16 14:55:03.045 13459-13459/com.example.jobschedulertest.jobschedulertest D/XXX: Scheduling MyJobService to run. 
06-16 14:55:08.069 13459-13459/com.example.jobschedulertest.jobschedulertest D/XXX: Job started 
06-16 14:52:19.315 19812-19812/com.example.jobschedulertest.jobschedulertest D/XXX: Scheduling MyJobService to run. 
06-16 14:52:24.342 19812-19812/com.example.jobschedulertest.jobschedulertest D/XXX: Job started 
06-16 14:52:56.480 19812-19812/com.example.jobschedulertest.jobschedulertest D/XXX: Job started 
Смежные вопросы