我有一种情况,我想重试最近失败的作业,但是workmanager返回所有失败的作业。有办法删除旧工作吗?
WorkManager
在满足您的约束时重新启动失败的作品。
肯定有一种方法可以取消WorkManager
中的作品。
要从WorkManager
中取消作品,您只需要保存作品的UUID。
您将可以通过这段代码取消任何工作-
WorkManager.getInstance(context).cancelWorkById(UUID);
对于OneTimeWorkRequest
,失败是最终状态。它不会被重新执行。对于PeriodicWorkRequest
,则有所不同。检查此博客:
也this video涵盖了此。
返回您的问题:
是否有办法删除旧工作?
是!
使用WorkManager#pruneWork()
删除处于最终状态(成功,失败和取消)的作业。正如您从文档中看到的那样,必须谨慎使用此方法。
请注意,这将删除所有处于失败状态的作业。删除旧作业的一种方法是,减少在构建工作请求时将WorkRequests保留在WorkManager的数据库中的时间,并设置自定义保留值。为此使用WorkManager#pruneWork()