在Service
和IntentService
的情况下,主要区别在于Service
在主线程上运行,而IntentService
没有在主线程上运行,而后者在工作完成时完成,而我们必须调用stopService()
或stopSelf()
来停止Service
。
这两个都可以简单地传递给startService()
。
那JobService
和JobIntentService
呢?
让我们看下面的代码片段:
JobInfo job = new JobInfo.Builder(id, new ComponentName(context, ExampleJobService.class))
.build();
JobScheduler scheduler = (JobScheduler) context
.getSystemService(Context.JOB_SCHEDULER_SERVICE);
scheduler.schedule(job);
ExampleJobService.class
可以同时引用JobService
和JobIntentService
吗?行为是否与
Service
和IntentService
相同(除了JobScheduler
可能无法立即启 Action 业)? 最佳答案
JobIntentService
本质上是IntentService
的替代,它以与Android O的新后台执行限制“兼容”的方式提供了类似的语义。它是作为O +上的计划作业实现的,但是已经被抽象掉了-您的应用程序不需要关心它是一份工作。
切勿直接使用schedule()
支持类对您希望使用的作业直接进行JobIntentService
。 JobIntentService
使用作业计划程序中的enqueue()
系统,并且您不能为同一作业混合和匹配enqueue()
和schedule()
。