JobService是android后来提供的一个服务,意在处理一些后台任务,且可以设置一些在启动后多长时间范围内随机开始执行任务等的参数。
但在某些手机JobService无法启动,例如小米9,说一下发现这个问题的过程。
在使用github上开源的一个异常捕获ACRA框架时,发现在app崩溃后华为设备可以将错误日志上传至服务器,小米9不可以,而这个框架就是利用JobService来上传错误日志。
对于这种情况在设置中打开应用的自启动就可以。
JobService示例:
public class JobSenderService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
new Thread(() -> {
// TODO 需要执行的任务
jobFinished(params, false);
}
}).start();
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
启动示例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
assert scheduler != null;
JobInfo.Builder builder = new JobInfo.Builder(0, new ComponentName(this, JobSenderService.class));
builder.setOverrideDeadline(0L); // 设置启动后多长时间范围内随机开始执行任务
scheduler.schedule(builder.build());
}