我正在我的应用中上传照片,并希望向用户提供上传进度。我打算这样做的方法是使用全局标记UPLOAD_MEDIA_TAG
,并在创建OneTimeWorkRequest
时使用它。这样我就可以观察WorkManager.getInstance().getStatusesByTag(UPLOAD_MEDIA_TAG)
LiveData,每当作业完成时,我都会显示完成百分比。 (I.E.上传3/10张照片将显示30%)。然后,一旦所有10/10照片上传,我会隐藏进度条。这很有效,因为它可以轻松支持离开应用程序,然后返回,只要应用程序在他们停止的位置启动,您就会看到进度条。
问题是,一旦所有10/10工作完成并标记为已完成,这些工作将一直存在,直到WorkManger修剪它们。因此,如果用户上传了5张照片,LiveData将返回15个状态而不是5个,从而丢弃百分比计算。
我注意到有一个方法OneTimeWorkRequest.keepResultsForAtLeast(duration)
,但我想要的是,keepResultsForAtMost(duration)
或WorkManager.getInstance().forcePrune()
方法,可以清理数据库中所有已完成的作业。
任何帮助都会很棒!
答案 0 :(得分:0)
自alpha发布以来,由于let someToy = q.pet.favoriteToy.name
print("This person's pet likes \(someToy).")
管理,因此您无法控制作业修剪。但是,您可以观察class Person {
var pet = Pet ()
}
的生命周期以获得工作状态并采取以下必要措施:
WorkManager
注意:
使用[WorkManager 1.0.0-alpha03修复了多个错误并引入了新功能。您可能感兴趣的是:
答案 1 :(得分:0)
在向Google提交问题后,他们说Alpha03中会有一个名为pruneWork
的函数。