【问题标题】:Transfer Files to Amazon S3 when app is closed应用程序关闭时将文件传输到 Amazon S3
【发布时间】:2019-03-22 01:19:03
【问题描述】:

我正在使用this 教程将文件上传到 Amazon S3 存储桶,但是当我关闭应用程序时,它会停止上传。我以为TransferService 正在处理这种情况。 谁能告诉我应该改变什么才能在用户关闭应用程序时不会终止上传?

【问题讨论】:

    标签: android amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    您可以将上传代码移动到服务而不是活动。您也可以使用作业调度程序。

    【讨论】:

    • 感谢您的建议,但您确定 aws 库没有办法做到这一点吗?
    • @KatyColins 请参阅上面的答案!谢谢。
    【解决方案2】:

    适用于 Android 的 AWS 开发工具包 - S3 - TransferUtility 不涵盖在应用程序关闭时您可以上传/下载文件的用例。从 2.7.0 开始的 TransferService 仅限于侦听网络连接更改,并且不会从服务启动传输。传输将提交到后台线程池并执行,直到 Android 提供 CPU 周期。此外,TransferService 会在应用关闭时被杀死。

    【讨论】:

    • 好的谢谢,那么当用户关闭应用程序时我该如何处理呢?我应该使用 Service 还是 Workmanager?
    • docs.aws.amazon.com/aws-mobile/latest/developerguide/… 在此链接中有“在后台执行长时间运行的传输”部分和使用服务的示例。这应该在用户关闭应用程序时起作用吗?
    • 嗨@KatyColins 即使您使用服务进行包装,由于服务在应用程序的主进程中运行,因此在应用程序关闭时服务也会被终止。我正在检查 WorkManager 是否解决了您的问题,您可以同时检查一下。
    • getApplicationContext().startService(new Intent(getApplicationContext(), TransferService.class));Build.VERSION_CODES.O 的任何解决方法?
    • 用户关闭应用后是否可以继续上传文件还是应该手动处理?
    【解决方案3】:

    您可以将进程委托给 SQS 将发送一条消息,而另一部分则是处理 lambda 函数的 cloudwatch 调度(此 lambda 读取 SQS 消息并处理对象以最终上传到 s3)

    另一件事是您上传代码以获得更多建议。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2010-09-12
      • 2015-10-03
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      相关资源
      最近更新 更多