Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AmazonS3 TransferObserver未在完成时对侦听器调用onStateChanged_Android_Amazon S3 - Fatal编程技术网

Android AmazonS3 TransferObserver未在完成时对侦听器调用onStateChanged

Android AmazonS3 TransferObserver未在完成时对侦听器调用onStateChanged,android,amazon-s3,Android,Amazon S3,我正在制作一个Android应用程序,它必须从AmazonS3下载一些图片。 我正在使用他们的Android SDK这样做: private class DownloadS3ImageTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { TransferUtility transferUtility =

我正在制作一个Android应用程序,它必须从AmazonS3下载一些图片。 我正在使用他们的Android SDK这样做:

private class DownloadS3ImageTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        TransferUtility transferUtility = AmazonS3ClientHelper.getTransferUtility(imageView.getContext());
        TransferObserver observer = transferUtility.download(BUCKET, fileName, file);
        observer.setTransferListener(new TransferListener() {

            @Override
            public void onStateChanged(int id, TransferState state) {
                if (TransferState.COMPLETED.equals(state)) {
                    imageView.setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath()));
                }
                Log.d("onStateChanged", state.toString() + " " + file.getAbsolutePath());
            }

            @Override
            public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
                int percentage = (int) (bytesCurrent / bytesTotal * 100);
                Log.d("percentage", String.valueOf(percentage));
            }

            @Override
            public void onError(int id, Exception ex) {
                Log.d("onError", ex.getLocalizedMessage());
            }
        });

        return null;

    }
私有类下载S3ImageTask扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
TransferUtility TransferUtility=AmazonS3ClientHelper.getTransferUtility(imageView.getContext());
TransferObserver=transferUtility.download(BUCKET、文件名、文件);
observer.setTransferListener(新的TransferListener(){
@凌驾
状态已更改的公共void(int id,TransferState){
if(TransferState.COMPLETED.equals(state)){
setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath());
}
Log.d(“onStateChanged”,state.toString()+“”+file.getAbsolutePath());
}
@凌驾
public void onProgressChanged(int-id、long-bytesCurrent、long-bytesTotal){
整数百分比=(整数)(字节当前/字节总数*100);
Log.d(“百分比”,String.valueOf(百分比));
}
@凌驾
public void onError(内部id,异常ex){
Log.d(“onError”,例如getLocalizedMessage());
}
});
返回null;
}
问题是,即使下载完成,侦听器上的onStateChanged方法也不会被调用。 即使有断点,它有时也会在那里停止一次,但并不总是如此,所以我不能依靠这些代码来显示我的图像

有什么想法或更好的方法来实现这一点