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

Android WorkManager: Is it possible to set task's maximum execution duration

我有一个在后台请求位置更新的周期性任务,但我需要限制这个任务长时间工作,因为它会耗尽电池电量,所以我需要在几分钟后停止它(3 分钟)。 Work Manager 是否提供一些机制来限制任务的执行时间?

WorkManager 没有此功能。
当 运行 启动一个 Worker 然后 OS 将停止该 Worker 时有 10 分钟的硬性限制(这可以克服将 Worker 提升到前台服务的问题,如博客中所述:Use WorkManager for immediate background execution).

如果你想实现 3 分钟的超时,你需要在你的 worker 中实现它。

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