是否可以在服务中使用AWS Android TransferUtility?

时间:2015-12-09 18:38:19

标签: android amazon-web-services amazon-s3 android-service

适用于S3的AWS Android SDK包含用于数据传输的类。即,TransferUtilityTransferUtility似乎创建了一个供自己使用的服务。

是否可以从服务中使用它,特别是设置传输侦听器并使用它向应用程序发送更新或从所述服务中创建通知?

2 个答案:

答案 0 :(得分:0)

是的,可以从其他服务开始提供服务。

如果在TransferUtility获取垃圾邮件之前,

TransferService的Amazon S3客户端会被垃圾收集,则可能无法正常工作。通常,对象在组件之间的意图中作为parcelable传递。然而,使S3客户端可以使用是相当复杂的。因此,SDK通过传递存储在静态映射中的弱引用来获取备用路由。关键是调用者必须在TransferService获取之前使S3客户端保持活动状态。

有关详细信息,请参阅https://github.com/aws/aws-sdk-android/issues/86

答案 1 :(得分:0)

是的,它可能。但是,您需要遵循一些步骤才能使其发挥作用。 您还可以将TransferListener添加到TransferUtiltiy对象,并使用该show通知和上传进度。

  1. 使用Service而不是IntentService,因为当您使用TransferUtility.upload时......意图服务不会等待其完成等并立即完成。因此,使用Service类并在onStartCommand方法中编写上传逻辑。

  2. TransferUtility使用名为" TransferService"的服务。因此,通过您的服务从TransferUtility运行此服务,您需要将您的服务和AWS TransferService放在清单中的相同进程中。

    <service
        android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
        android:enabled="true"
        android:process=":sync" />
    <service
        android:name=".services.UploadService"
        android:enabled="true"
        android:process=":sync" />
    
  3. UplaodService将是您自己的使用TransferUtility

    的服务