【问题标题】:WorkManager: multiple workers OR one long running workerWorkManager:多个工人或一名长期运行的工人
【发布时间】:2021-09-07 21:12:44
【问题描述】:

我的任务是将照片(可以是一张照片,也可以是 50 或 100 张照片)上传到云端,上传完成后会显示通知。 API 一次只支持一张照片,无论上传成功与否,我都需要使用上传的照片更新 UI。

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

我想听听社区对以下方面的意见:

知道了上面提到的要求,你宁愿去吗

  1. 创建一个long running worker,按顺序执行所有上传,然后在完成后创建通知,或者

  2. 让一名工作人员上传一张照片并为每张图片创建一个上传 OneTimeWorkRequest 并将通知作为单独的工作人员。

    例子:

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

【问题讨论】:

    标签: android android-workmanager


    【解决方案1】:

    你需要问自己。

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

    是不是有点像:

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

    听起来更像是一部作品。为什么要花这么多开销。

    但同时考虑如果工作中断会发生什么。然后你的情况是:“一半工作”,所以你需要自己管理这个。使用图像队列,您可以从头开始上传,这要简单得多。

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

    你应该给自己写这样的东西。利弊。大量数据,当您看到时,您将得到答案。如果你愿意,你可以买一只橡皮鸭。但目前,您的问题更像是您与我们分享的“想法”。

    【讨论】:

    • 感谢您的回答。我确实与多名工作人员一起去更好地控制每个文件上传。 WorkManager 确实提供了我以简洁的方式执行任务所需的所有 API。每个工作人员都从协程工作人员扩展并在 IO 上分派,因为它具有有限的线程池。
    猜你喜欢
    • 1970-01-01
    • 2019-08-24
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多