【发布时间】:2016-03-15 04:19:38
【问题描述】:
适用于 S3 的 AWS Android 开发工具包包括用于数据传输的类。即TransferUtility。 TransferUtility 似乎创建了一个供自己使用的服务。
是否可以从服务中使用它,特别是设置传输侦听器并使用它向应用程序发送更新或从所述服务中创建通知?
【问题讨论】:
标签: android amazon-web-services amazon-s3 android-service
适用于 S3 的 AWS Android 开发工具包包括用于数据传输的类。即TransferUtility。 TransferUtility 似乎创建了一个供自己使用的服务。
是否可以从服务中使用它,特别是设置传输侦听器并使用它向应用程序发送更新或从所述服务中创建通知?
【问题讨论】:
标签: android amazon-web-services amazon-s3 android-service
是的,可以从另一个服务启动一个服务。
如果其 Amazon S3 客户端在 TransferService 获取垃圾之前收集到垃圾,TransferUtility 可能无法工作。通常,对象在组件之间的意图中作为可包裹传递。然而,使 S3 客户端可打包是相当复杂的。因此,SDK 通过传递存储在静态地图中的弱引用来采用替代路线。关键是调用者必须在TransferService 得到它之前让 S3 客户端保持活动状态。
【讨论】:
是的,有可能。但是您需要遵循一些步骤才能使其正常工作。 您还可以将 TransferListener 添加到您的 TransferUtiltiy 对象并使用该显示通知和上传进度。
使用服务而不是 IntentService,因为当您使用 TransferUtility.upload... 时,意图服务不会等待其完成等,而是立即完成。所以使用Service类,在onStartCommand方法中编写上传逻辑。
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" />
UplaodService 将是您自己的使用 TransferUtility 的服务
【讨论】: