我一直在与其他链接进行检查,用stackoverflow来减少工作管理器的时间,但是我在链接下面找到了
How to reduce time of PeriodicWorkManager in WorkManager
以上链接说,最短时间为15分钟。
需要立即将数据从移动设备发送到服务器。是否有其他方法可以缩短时间?
[请帮助我。谢谢。
在work manager
中,两个定期请求之间的最小时间间隔为15 minutes
。
阅读此文档:https://developer.android.com/reference/kotlin/androidx/work/PeriodicWorkRequest
您无法在work manager
中减少它。
如果在这种情况下要减少时间,则需要使用JobScheduler
,它提供了具有特定时间间隔的选项来执行您的请求。
https://developer.android.com/reference/android/app/job/JobScheduler
如果需要立即发送,可以尝试OneTimeWorkRequest
。尽管它的执行还取决于您添加的约束或其他一些情况,但是它通常会在您多次调用后立即开始。
编辑:
然后,如果需要此periodically
,则可以创建一个PeriodicWorkRequest
并在其中启动OneTimeWorkRequest
。
例如假设您有2种方法,startOneTimeWorker()
,startPeriodicWorker()
如果您想立即进行一次同步,OneTimeWorker
将完成该工作。
但是如果要立即同步然后又安排它,请先呼叫startOneTimeWorker()
,然后再呼叫startPeriodicWorker()
。周期性工作人员将在startOneTimeWorker()
doWork()
的位置因此,第一次会立即调用OneTimeWorkRequest
,然后将根据PeriodicTimeWorkRequest
的时间表对其进行调用。
OneTimeWorkRequest
PeriodicWorkRequest
,在其中调用OneTimeWorkRequest
您可以用Worker
来创建OneTimeWorkRequest
,并且在dowWork()
结束(读返回)之前,请使其再次注册。那会像:
val tenMinuteRequest = OneTimeWorkRequestBuilder<YourWorker>()
.setInitialDelay(10, TimeUnit.MINUTES)
.build()
WorkManager.getInstance(applicationContext)
.enqueue(tenMinuteRequest)
//return Result.Success here or whatever
[当您从另一个类中解雇此Worker时,它将do
其work
并立即重新安排自身的时间,然后进入循环。