【问题标题】:AWS S3 TransferListener receive duplicated id of COMPLETEDAWS S3 TransferListener 收到 COMPLETED 的重复 ID
【发布时间】:2016-04-15 15:45:07
【问题描述】:

我从https://github.com/awslabs/aws-sdk-android-samples 下载了 S3TransferUtilitySample。然后在它的 UploadActivity 中添加如下代码进行测试:

    private void uploadFiles() {
        File dir = new File("/storage/sdcard0/DCIM");
        File[] files = dir.listFiles();
        for(File file : files) {
            uploadAFile(file);
        }
    }

    private void uploadAFile(File file) {
        if(file.isDirectory() || !file.exists()) {
            return;
        }

        TransferObserver observer = transferUtility.upload(Constants.BUCKET_NAME, file.getName(), file);
        observer.setTransferListener(new UploadListener());
    }

我的 UploadListener 看起来像这样:

private class UploadListener implements TransferListener {

        // Simply updates the UI list when notified.
        @Override
        public void onError(int id, Exception e) {
            Log.e(TAG, "Error during upload: " + id, e);
        }

        @Override
        public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
            Log.d(TAG, String.format("onProgressChanged: %d, total: %d, current: %d",
                    id, bytesTotal, bytesCurrent));
        }

        @Override
        public void onStateChanged(int id, TransferState newState) {
            if(newState == TransferState.COMPLETED) {
                Log.d(TAG, "file transfer completed:" + id);
            }
        }
    }

uploadFiles() 在一些按钮点击监听器中被调用。然后我得到了以下日志:

file transfer completed:21
file transfer completed:26
file transfer completed:44
file transfer completed:44
file transfer completed:46
file transfer completed:46
file transfer completed:47
file transfer completed:47
file transfer completed:48
file transfer completed:48

你看,有些 id 是重复的!那是有线的!你知道有什么问题吗?帮我。 (注意:完成后我需要使用 id 做更多的事情)

【问题讨论】:

    标签: android amazon-web-services file-upload amazon-s3


    【解决方案1】:

    这是因为示例应用程序的设置。它有一个跟踪传输进度的列表视图。当页面加载时,它会为每个正在进行的传输附加一个侦听器。并且您注册了一个相同的 UploadListener。看起来你的被触发了两次,但实际上一个来自列表视图。希望能解释。

    【讨论】:

    猜你喜欢
    • 2016-11-07
    • 2018-06-20
    • 2017-09-08
    • 2018-01-11
    • 2013-03-13
    • 2021-12-01
    • 1970-01-01
    • 2015-12-29
    • 2022-01-24
    相关资源
    最近更新 更多