安卓工作管理器:是否可以设置任务的最大执行持续时间



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

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

如果你想实现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()
}
}
}

最新更新