EnqueueWork 不会在 Oreo 及更高版本上立即启动
EnqueueWork doesn't start immediately on Oreo and above
在我的 SDK 中,我使用 JobIntentService
在后台做一些工作。我注意到当我调用 enquequeWork()
时作业并没有立即开始,而是在一段时间后开始。我 不能 使用 foreground service
来完成这项工作,因为该应用程序不能 运行 根据客户的要求作为前台。
在 enqueueWork()
被调用后,有没有其他方法可以强制完成工作?
我还使用 WorkManager
的 PeriodicWorkRequest
检查工作是否可以完成,每 X 分钟一次,如果可以,我调用 JobIntentService
并将我需要的工作排队。
Is there any other way I can force the job to be done immediately after enqueueWork() is called?
没有。 JobIntentService
使用 JobScheduler
,JobScheduler
在它决定时运行作业。
I also use WorkManager's PeriodicWorkRequest to check if the work can be done, every X minutes and if so, I call for the JobIntentService and enqueue the work I need.
如果 JobIntentService
的唯一供应商是这个 Worker
,您可以考虑简化您的代码并只在您的 Worker
中完成您的工作。或者,让您的 Worker
或 JobIntentService
可以使用的 class 执行实际的 "work"。正如 JobIntentService
使用 JobScheduler
,WorkManager
也是如此。您当前的系统似乎有一个作业会触发另一个作业,您可以通过合并这些作业来减少延迟。
在我的 SDK 中,我使用 JobIntentService
在后台做一些工作。我注意到当我调用 enquequeWork()
时作业并没有立即开始,而是在一段时间后开始。我 不能 使用 foreground service
来完成这项工作,因为该应用程序不能 运行 根据客户的要求作为前台。
在 enqueueWork()
被调用后,有没有其他方法可以强制完成工作?
我还使用 WorkManager
的 PeriodicWorkRequest
检查工作是否可以完成,每 X 分钟一次,如果可以,我调用 JobIntentService
并将我需要的工作排队。
Is there any other way I can force the job to be done immediately after enqueueWork() is called?
没有。 JobIntentService
使用 JobScheduler
,JobScheduler
在它决定时运行作业。
I also use WorkManager's PeriodicWorkRequest to check if the work can be done, every X minutes and if so, I call for the JobIntentService and enqueue the work I need.
如果 JobIntentService
的唯一供应商是这个 Worker
,您可以考虑简化您的代码并只在您的 Worker
中完成您的工作。或者,让您的 Worker
或 JobIntentService
可以使用的 class 执行实际的 "work"。正如 JobIntentService
使用 JobScheduler
,WorkManager
也是如此。您当前的系统似乎有一个作业会触发另一个作业,您可以通过合并这些作业来减少延迟。