EnqueueWork不会立即在Oreo及更高版本上启动

时间:2019-03-31 14:34:42

标签: android android-workmanager jobintentservice

在我的SDK中,我使用JobIntentService在后​​台执行一些工作。我注意到,当我致电enquequeWork()时,该工作不会立即开始,但是会在一段时间后开始。我不能使用foreground service来完成工作,因为该应用程序不能根据客户的请求作为前台运行。 在调用enqueueWork()之后,是否还有其他方法可以强制我立即完成工作? 我还使用WorkManager的{​​{1}}每隔X分钟检查一次工作是否可以完成,如果可以,我打电话给PeriodicWorkRequest并排队我需要的工作。

1 个答案:

答案 0 :(得分:2)

  

在调用enqueueWork()之后,还有其他方法可以强制我立即完成工作吗?

不。 JobIntentService使用JobScheduler,而JobScheduler决定执行作业。

  

我还使用WorkManager的PeriodicWorkRequest每隔X分钟检查一次工作是否可以完成,如果可以,我调用JobIntentService并排队我需要的工作。

如果Worker的唯一工作提供者是JobIntentService,则可以考虑简化代码,并只在Worker中完成工作。或者,由您的WorkerJobIntentService可以使用的类来执行实际的“工作”。就像JobIntentService使用JobScheduler一样,WorkManager也是如此。您当前的系统似乎有一个作业只是触发了另一个作业,您可以通过合并这些作业来减少延迟。