Android工作经理:我可以强制删除已完成的作业吗?
我正在我的应用程序中上载照片,并希望向用户提供上载进度。我要做的是有一个全局标记,上传\媒体\标记,并在创建OneTimeWorkRequest时使用它。这样我就可以观察WorkManager.getInstance.GetStatuseBytagUpload\u MEDIA\u标记LiveData,每当作业完成时,我都会显示完成百分比。即上传3/10照片将显示30%。然后,一旦所有10/10照片上传完毕,我会隐藏进度条。这很好用,因为它可以很容易地支持离开应用程序、返回,并且一旦应用程序在停止的地方启动,您就会看到进度条 问题是,一旦所有10/10作业都完成并标记为已完成,这些作业将一直保留,直到WorkManger将其删除。因此,如果用户再上传5张照片,LiveData将返回15个状态,而不是5个,从而放弃百分比计算 我注意到有一个方法OneTimeWorkRequest.keepresultsforatlestduration,但我想要的是类似于keepresultsforatmosturation或WorkManager.getInstance.forcePrune的方法,它将从数据库中清除所有已完成的作业Android工作经理:我可以强制删除已完成的作业吗?,android,android-workmanager,Android,Android Workmanager,我正在我的应用程序中上载照片,并希望向用户提供上载进度。我要做的是有一个全局标记,上传\媒体\标记,并在创建OneTimeWorkRequest时使用它。这样我就可以观察WorkManager.getInstance.GetStatuseBytagUpload\u MEDIA\u标记LiveData,每当作业完成时,我都会显示完成百分比。即上传3/10照片将显示30%。然后,一旦所有10/10照片上传完毕,我会隐藏进度条。这很好用,因为它可以很容易地支持离开应用程序、返回,并且一旦应用程序在停止
任何帮助都会很好 在alpha版本中,由于作业修剪是由WorkManager管理的,所以您无法对其进行太多控制。但是,您可以观察WorkManager的生命周期,以获取作业状态并采取必要的操作,如下所示:
WorkManager.getInstance().getStatusById(myWork.getId())
.observe(lifecycleOwner, workStatus -> {
// Do something with the status
if (workStatus != null && workStatus.getState().isFinished()){
// Stop observing data or do other action
}
});
注:
使用[WorkManager],它修复了几个bug并引入了新功能。您可能感兴趣的一个功能是:
添加了WorkManager.pruneWork以从内部数据库中删除已完成的作业
在向谷歌提交问题后,他们说会有一个名为Alpha03中的pruneWork的函数。谢谢你的回复。这并不能解决我的问题,但我的问题更多的是功能请求,而不是任何东西。@AndrewMarshall你不应该将功能请求放在Stackoverflow上,因为这不是Stackoverflow的目的。把它放在G上oogle的网站。