Android JobIntentService文档中JobService执行时长限制是多少?
JobIntentService 在 Android Oreo+ 上的执行时间限制
这个问题我当初适配Android Oreo的时候也踩过坑,特意去翻了JobService的相关逻辑和官方的隐性说明,给你明确答案:
当 JobIntentService 以Job形式运行(也就是在Android Oreo及更高版本系统上),它遵循JobService后台任务的执行时间限制——单次最多5分钟。
如果你的任务在5分钟内没能完成,系统会"干净地"终止当前任务的执行(不会直接杀死进程),之后会按照JobScheduler的调度规则重新尝试执行这个任务,但重试次数是有限的,多次超时后可能就不再触发了。
顺便补充几个实用的关键点:
- 要是你需要执行超过5分钟的长任务,更推荐用
WorkManager来拆分任务分步执行;如果必须一次性完成,也可以调用startForeground()将任务转为前台优先级(前台Job的执行时限是10分钟),不过前台任务必须显示通知,得兼顾好用户体验。 - 在Android O之前的版本,
JobIntentService就是普通的Service,没有这个时间限制,只要系统资源充足就能持续运行。
内容的提问来源于stack exchange,提问作者Krumelur
相关产品推荐
相关产品推荐

