我正在使用 WorkManager -> PeriodicWorkRequest 设置数据库与服务器的定期后台同步。
val workManager = WorkManager.getInstance()
val syncFileWork = PeriodicWorkRequestBuilder<FileSyncWorker>(
intervalInMins,
TimeUnit.MINUTES,
PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS,
TimeUnit.MILLISECONDS
)
.setInputData(mapOf(KEY_FROM_PERIODIC_SYNC to true).toWorkData())
.addTag("PeriodicSyncRequest")
.build()
workManager
?.enqueueUniquePeriodicWork("PeriodicSyncRequest", ExistingPeriodicWorkPolicy.REPLACE, syncFileWork)
这一点工作正常。
当用户执行拉动刷新时,我分别使用 aOneTimeWorkRequest
与服务器同步:
val workManager = WorkManager.getInstance()
val syncFileWork = OneTimeWorkRequestBuilder<FileSyncWorker>()
.addTag("SyncRequest")
.build()
workManager
?.beginUniqueWork("ManualSync", ExistingWorkPolicy.KEEP, syncFileWork)
?.enqueue()
这也很好。
现在我也想使用周期性请求来代替一次性请求。我的主要原因是在用户手动同步后立即触发定期请求时不进行双重同步。
有没有办法触发PeriodicWorkRequest
from 代码,所以我可以用OneTimeWorkRequest
调用来替换PeriodicWorkRequest
.