JobServiceContext与JobService交互的过程当中会JobServiceContext会进行超时检查,下面咱们来看看超时检查是怎么作的。 咱们须要解决的主要问题是:api
- 哪些操做会执行超时检查
- 超时时间是多少
- 一旦发生超时JobServiceContext会怎么处理
1. 哪些操做会执行超时检查
JobServiceContext中使用一个名为scheduleOpTimeOut的方法来执行超时检查,那么哪些地方会调用该方法呢? 经过全局搜索发现有如下调用点:
1.1 执行服务的bind操做时
boolean executeRunnableJob(JobStatus job) {synchronized (mLock) {//...scheduleOpTimeOut();final Intent intent = new Intent().setComponent(job.getServiceComponent());boolean binding = mContext.bindServiceAsUser(intent, this,Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND,new UserHandle(job.getUserId()));//...return true;}
}
1.2 触发JobService.onStartJob方法时
private void handleServiceBoundH() {