WorkManager:多个worker或一个长时间运行的worker



我有一个上传照片(可以是一张照片,也可以是50或100张照片)到云的任务,一旦上传的照片完成,显示一个通知。API一次支持一张照片,如果上传成功与否,我需要用上传的照片更新UI。

显然,我想到的是创建一个服务,但由于Android现在建议使用WorkManager来完成我们所有的前台/后台工作,我开始研究worker和WorkManager。

我想听听社区对以下问题的意见:

了解了上述要求,你是否更愿意选择

  1. 创建一个长时间运行的worker,按顺序完成所有上传,然后在完成后创建一个通知,或者

  2. 有一个worker,它所做的就是上传一张照片,并为每张图片创建一个上传OneTimeWorkRequest和通知作为一个单独的worker。

    的例子:

workManager
.beginUniqueWork(workUniqueId, ExistingWorkPolicy.REPLACE, uniqueUploadPhotoWorkRequestList)
.then(notificationWorkRequest)
.enqueue()

你得问问自己。

我在做什么工作?输入参数是什么?输出参数是什么?

是这样的吗?

  • 我要上传图片。
  • 我的输入是某个目录
  • 我的输出是一个结束通知

听起来更像是一个作品。为什么要费这么大的劲呢?

但同时考虑如果工作被中断会发生什么。然后是"half a work"的情况;所以你得自己处理这件事。使用图像队列,您可以从头开始上传,这要简单得多。

但这也取决于另一端的服务器。它如何理解块上的上传。保留块用于恢复的时间。

你应该给自己写这样的东西。支持和反对。很多数据,当你看到你就会得到你的答案。如果你愿意,你可以买一只橡皮鸭。但目前你的问题看起来更像是一个"想法"。你在和我们分享。

最新更新