Я замечаю, что когда я планирую работу, выполняемую с 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.
Вы получите идеальное решение для этого? Даже я столкнулся с тем же вопросом –
Я считаю, что это связано с оптимизацией доз, поэтому решение не доступно. – TALE