在我的SDK中,我使用JobIntentService
在后台执行一些工作。我注意到,当我致电enquequeWork()
时,该工作不会立即开始,但是会在一段时间后开始。我不能使用foreground service
来完成工作,因为该应用程序不能根据客户的请求作为前台运行。
在调用enqueueWork()
之后,是否还有其他方法可以强制我立即完成工作?
我还使用WorkManager
的{{1}}每隔X分钟检查一次工作是否可以完成,如果可以,我打电话给PeriodicWorkRequest
并排队我需要的工作。
答案 0 :(得分:2)
在调用enqueueWork()之后,还有其他方法可以强制我立即完成工作吗?
不。 JobIntentService
使用JobScheduler
,而JobScheduler
决定执行作业。
我还使用WorkManager的PeriodicWorkRequest每隔X分钟检查一次工作是否可以完成,如果可以,我调用JobIntentService并排队我需要的工作。
如果Worker
的唯一工作提供者是JobIntentService
,则可以考虑简化代码,并只在Worker
中完成工作。或者,由您的Worker
或JobIntentService
可以使用的类来执行实际的“工作”。就像JobIntentService
使用JobScheduler
一样,WorkManager
也是如此。您当前的系统似乎有一个作业只是触发了另一个作业,您可以通过合并这些作业来减少延迟。