JobScheduler and JobIntentService

7

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

最近我发现了在API 26中引入的JobIntentService。文档中说:“当运行在Android O或更高版本上时,工作将通过JobScheduler.enqueue作为任务调度。当在旧版本平台上运行时,它将使用Context.startService。”

我想知道的是,为什么Android只从API 26开始使用JobScheduler,而不是从API 21开始呢?API 26及以上版本中的JobScheduler与API 21中引入的JobScheduler有何不同?我需要改变任何代码来提高效率/避免错误,将后台作业转换为使用JobIntentService而不是Job Schedulers吗?我猜我不理解JobIntentService试图实现的意图。

1个回答

14

我不理解JobIntentService旨在实现什么

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

为什么Android仅从API 26开始使用JoScheduler而不是API 21

只有Google能够回答这个问题,这就是为什么形如“开发人员X为什么做出决策Y”的问题对Stack Overflow来说并不好的原因。

请注意,“超过一分钟”的问题涉及API Level 26+上的后台限制;在之前版本中,没有这样的限制。

API 26及以上的JobScheduler与API 21中引入的JobScheduler是否有差别?

有所更改,包括一些扩展,使得JobIntentService能够工作。

我需要更改任何代码以提高效率/避免错误,将我的后台作业转换为使用JobIntentService而不是作业调度程序吗?

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接