Android WorkManager:是否可以设置任务的最大执行持续时间

时间:2020-09-14 08:04:39

标签: android android-workmanager android-jobscheduler

我有一个定期任务,要求在后台更新位置,但是我需要限制该任务长时间工作,因为它会耗尽电池电量,因此我需要在几分钟后将其停止(3分钟)。工作管理器是否提供某种机制来限制任务的执行时间?

1 个答案:

答案 0 :(得分:1)

WorkManager没有此功能。
在运行Worker时有10分钟的硬限制,然后操作系统将停止该Worker(可以克服将Blog提升为前台服务的方式,如博客Use WorkManager for immediate background execution中所述)。

如果要实施3分钟的超时,则需要在工作人员中实施。

使用Kotlin和CoroutineWorker,可以在要运行时限的代码块上使用withTimeout来实现此功能:

class MyWorker(
    appContext: Context,
    private val params: WorkerParameters
) : CoroutineWorker(appContext, params) {

  override suspend fun doWork(): Result {
    return withTimeout(3 * 60 * 1000) {
      // Do a long computation
      // ...
      return@withTimeout Result.success()
    }
  }
}