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

问题描述

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

解决方法

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()
    }
  }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...