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)
| 归档时间: |
|
| 查看次数: |
3684 次 |
| 最近记录: |