由于android oreo的后台执行限制,文档建议重构IntentServices到JobIntentService
https://developer.android.com/about/versions/oreo/background
JobIntentService立即作为低于oreo的IntentService运行,但在oreo上计划作业+
https://developer.android.com/reference/android/support/v4/app/JobIntentService
在什么情况下,将一个普通的IntentService作为前台Service运行并持续通知是有意义的,什么时候JobIntentService更好?
我在JobIntentService中看到的一个缺点是它不会立即启动。

最佳答案

前台服务不受打瞌睡的影响,但如果需要在屏幕关闭时继续执行任务,则仍必须使用唤醒锁。
JobIntentService(使用JobScheduler)为您管理唤醒锁,但您无法控制何时启动作业。
我将使用前台的intentservice(或service)来执行高优先级的任务(例如下载数据库),这些任务应该立即运行,并且不应该被系统暂停/终止。
我将使用JobIntentService和AlarmManager来安排低优先级任务,比如定期刷新小部件的数据。

08-06 10:56