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
我在Nexus 6
你得到这个一个完美的解决方案?即使我面临同样的问题 –
我相信这是由于打盹优化,所以没有解决方案。 – TALE