0

在我的 SDK 中,我用来JobIntentService在后台做一些工作。我注意到,当我打电话时,这项工作并没有立即开始enquequeWork(),而是在一段时间后开始。我不能用来foreground service做这项工作,因为应用程序不能按客户的要求作为前台运行。有没有其他方法可以强制在enqueueWork()被调用后立即完成工作?我还使用WorkManager'sPeriodicWorkRequest来检查工作是否可以完成,每 X 分钟一次,如果可以,我会调用'sJobIntentService并将我需要的工作排入队列。

4

1 回答 1

2

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

JobIntentService使用JobScheduler,并JobScheduler在决定时运行作业。

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

Worker如果唯一的工作供应商JobIntentService是 this ,您可能会考虑简化您的代码并在您的工作中完成您的工作Worker。或者,让您Worker或您的JobIntentService. 就像JobIntentService使用一样JobScheduler,也是如此WorkManager。您当前的系统似乎有一个工作只是触发另一个工作,您可以通过整合这些来减少延迟。

于 2019-03-31T14:39:52.097 回答