Android AmazonS3 TransferObserver未在完成时对侦听器调用onStateChanged
我正在制作一个Android应用程序,它必须从AmazonS3下载一些图片。 我正在使用他们的Android SDK这样做: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 =
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方法也不会被调用。
即使有断点,它有时也会在那里停止一次,但并不总是如此,所以我不能依靠这些代码来显示我的图像
有什么想法或更好的方法来实现这一点