由于 Android Oreo 后台执行限制,文档建议将 IntentService
重构为 JobIntentService
。
https://developer.android.com/about/versions/oreo/background
JobIntentService
作为 IntentService
在 Oreo 下立即运行,但在 Oreo+ 上安排作业
https://developer.android.com/reference/android/support/v4/app/JobIntentService
在什么情况下将普通的 IntentService
作为具有持久通知的前台 Service
运行是有意义的,什么时候是 JobIntentService
更好?
我在 JobIntentService
中看到的一个缺点是它不会立即启动。
最佳答案
前台服务不受 Doze 影响,但如果您需要在屏幕关闭时继续执行任务,您仍然必须使用唤醒锁。
JobIntentService(使用 JobScheduler)为您管理唤醒锁,但您对何时开始作业的控制较少。
我会将前台 IntentService(或服务)用于应立即运行且不应被系统暂停/终止的高优先级任务(例如下载数据库)。
我会结合使用 JobIntentService 和 AlarmManager 来安排低优先级任务,例如定期刷新小部件的数据。
关于android - IntentService + startForeground 与 JobIntentService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248528/