如何缩短Workmanager Android的时间段?

问题描述 投票:2回答:3

我一直在与其他链接进行检查,用stackoverflow来减少工作管理器的时间,但是我在链接下面找到了

How to reduce time of PeriodicWorkManager in WorkManager

以上链接说,最短时间为15分钟。

需要立即将数据从移动设备发送到服务器。是否有其他方法可以缩短时间?

[请帮助我。谢谢。

android android-workmanager
3个回答
0
投票

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


0
投票

如果需要立即发送,可以尝试OneTimeWorkRequest。尽管它的执行还取决于您添加的约束或其他一些情况,但是它通常会在您多次调用后立即开始。

[DocsRefer

编辑:

然后,如果需要此periodically,则可以创建一个PeriodicWorkRequest并在其中启动OneTimeWorkRequest

例如假设您有2种方法,startOneTimeWorker()startPeriodicWorker()

如果您想立即进行一次同步,OneTimeWorker将完成该工作。

但是如果要立即同步然后又安排它,请先呼叫startOneTimeWorker(),然后再呼叫startPeriodicWorker()。周期性工作人员将在startOneTimeWorker()

中呼叫doWork()的位置

因此,第一次会立即调用OneTimeWorkRequest,然后将根据PeriodicTimeWorkRequest的时间表对其进行调用。

  • 呼叫OneTimeWorkRequest
  • 计划PeriodicWorkRequest,在其中调用OneTimeWorkRequest

0
投票

您可以用Worker来创建OneTimeWorkRequest,并且在dowWork()结束(读返回)之前,请使其再次注册。那会像:

val tenMinuteRequest = OneTimeWorkRequestBuilder<YourWorker>()
        .setInitialDelay(10, TimeUnit.MINUTES)
        .build()
WorkManager.getInstance(applicationContext)
        .enqueue(tenMinuteRequest)
//return Result.Success here or whatever

[当您从另一个类中解雇此Worker时,它将dowork并立即重新安排自身的时间,然后进入循环。

© www.soinside.com 2019 - 2024. All rights reserved.