gpt4 book ai didi

Android AWS S3 库 - 同步上传

转载 作者:行者123 更新时间:2023-11-29 01:00:10 25 4
gpt4 key购买 nike

我们使用 Android S3 库上传内容。现在我们正在将我们的应用程序升级到目标 SDK 版本 26。

在我们的一项服务中,我们将所有请求存储在数据库中,并在发布职位时上传内容。我们确保互联网可用。

但是我们调用下面的行来上传文件,

final TransferUtility transferUtility = new TransferUtility(getS3Client(), ApplicationNekt.getContext());
final TransferObserver observer = transferUtility.upload(uploadConfig[0], uploadConfig[1], file);

这在内部调用 startService() 以启动其内部 TransferService。

        S3ClientReference.put(id, s3);
final Intent intent = new Intent(appContext, TransferService.class);
intent.setAction(action);
intent.putExtra(TransferService.INTENT_BUNDLE_TRANSFER_ID, id);
intent.putExtra(TransferService.INTENT_BUNDLE_TRANSFER_UTILITY_OPTIONS,
this.transferUtilityOptions);
appContext.startService(intent);

所以这会导致我们在 Oreo 中的应用程序崩溃,因为后台服务是不允许的。

Fatal Exception: java.lang.IllegalStateException
Not allowed to start service Intent { act=add_transfer cmp=com.ourapp/com.amazonaws.mobileconnectors.s3.transferutility.TransferService (has extras) }: app is in background uid UidRecord{62479b u0a200 LAST bg:+1m21s705ms idle procs:1 seq(0,0,0)}

有什么办法可以同步启动送货服务吗?

最佳答案

对于同步上传/下载,S3client 中有一个单独的 API。它上传和下载没有任何服务依赖性。引用 S3 客户端中的 putObject 和 getObject。

    AmazonS3Client sS3Client = new AmazonS3Client(getCredProvider());
PutObjectResult result = sS3Client.putObject(bucket, key, file);

https://github.com/aws/aws-sdk-android/issues/400#issuecomment-430712072

附言从 2.7.x 版本开始,AWS 将后台服务分离出来。那也是可以用的。 https://github.com/aws/aws-sdk-android/issues/400#issuecomment-423260044

关于Android AWS S3 库 - 同步上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51819881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com