我正在开发一个支持 Android API 版本 21 及更高版本的应用程序。我的大部分后台任务都是使用 API 21 中引入的 JobScheduler 设计的。

我最近遇到了 API 26 中引入的 JobIntentService。文档说“在 Android O 或更高版本上运行时,工作将通过 JobScheduler.enqueue 作为作业分派(dispatch)。在旧版本的平台上运行时,它将使用 Context。启动服务。”

我想了解的是,为什么 android 仅从 API 26 而不是从 API 21 使用 JoScheduler。API 26 及更高版本上的 JobScheduler 与 API 21 中引入的 JobScheduler 是否有区别。我是否需要更改任何代码为了提高效率/避免错误,请将我的后台作业转换为使用JobIntentService而不是Job Scheduler。我想我不明白 JobIntentService 试图实现的 Intent 。

最佳答案


JobIntentService 旨在替代 IntentService/WakefulBroadcastReceiver 组合,用于可能需要超过一分钟(但少于十分钟)并且您不希望使用前台服务的后台任务。



只有谷歌可以回答这个问题,这就是“为什么开发人员 X 做出决定 Y?”这种形式的问题的原因。不适合堆栈溢出。

请注意,“超过一分钟”的问题是由 API 级别 26+ 的背景限制引起的;在以前的版本中,没有这样的限制。



已经发生了一些变化,包括一些使 JobIntentService 能够工作的扩展。



我不知道你为什么要从你自己的 JobService 切换到 JobIntentServiceJobIntentServiceIntentService 的替代品,而不是 JobService

10-04 14:50