由于android oreo的后台执行限制,文档建议重构IntentService
s到JobIntentService
。
https://developer.android.com/about/versions/oreo/backgroundJobIntentService
立即作为低于oreo的IntentService
运行,但在oreo上计划作业+
https://developer.android.com/reference/android/support/v4/app/JobIntentService
在什么情况下,将一个普通的IntentService
作为前台Service
运行并持续通知是有意义的,什么时候JobIntentService
更好?
我在JobIntentService
中看到的一个缺点是它不会立即启动。
最佳答案
前台服务不受打瞌睡的影响,但如果需要在屏幕关闭时继续执行任务,则仍必须使用唤醒锁。
JobIntentService(使用JobScheduler)为您管理唤醒锁,但您无法控制何时启动作业。
我将使用前台的intentservice(或service)来执行高优先级的任务(例如下载数据库),这些任务应该立即运行,并且不应该被系统暂停/终止。
我将使用JobIntentService和AlarmManager来安排低优先级任务,比如定期刷新小部件的数据。