一、工作流程:
SystemServer start JobSchedulerService --> Clinet App getSystemService --> JobScheduler --> Binder --> JobSchedulerService --> schedule --> JobService
1、事实上JobSchedulerService是系统的一种服务,启动流程跟系统的其他服务是一样的,具体在SystemServer的startOtherServices方法中,具体如下:
private void startOtherServices() {
......
mSystemServiceManager.startService(TwilightService.class);
if (NightDisplayController.isAvailable(context)) {
mSystemServiceManager.startService(NightDisplayService.class);
}
mSystemServiceManager.startService(JobSchedulerService.class);
mSystemServiceManager.startService(SoundTriggerService.class);
.....
}
2、客户端获取JobScheduler服务,代码如下:
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());