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

Rob*_*yan 3 android android-jobscheduler android-workmanager

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

pfm*_*ggi 10

WorkManager没有这个功能。
运行 Worker 时有 10 分钟的硬性限制,然后操作系统将停止该 Worker(这可以克服将 Worker 提升为前台服务的问题,如博客中所述:使用 WorkManager 立即后台执行)。

如果你想实现 3 分钟的超时,你需要在你的工作线程中实现它。

withTimeout使用 Kotlin 和 CoroutineWorker 可以使用您想要在时间限制下运行的代码块来实现:

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()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)