我正在使用Glide从Amazon S3获取一组的图像。这些图像是动态URL(预签名URL),因此我使用了该方法来为GlideUrl创建一个自定义类,该类将覆盖该图像的getCacheKey()。组的缓存键保持不变。一切正常,Glide第一次从远程加载图像,其余时间从内存或磁盘高速缓存加载图像。
现在,我添加了用户可以更改组图像的功能。在这种情况下,尽管高速缓存键保持不变,但是需要刷新图像(再次从服务器加载)。为此,我在IntegerVersionSignature中使用了signature()方法。因此,将更改后的图像上传到S3服务器时,我将更新要加载的组图像的签名。
我面临的问题是每次将图像上传到服务器后,我调用Glide用新的签名加载URL,但失败,出现FileNotFoundException。基本上,它尝试加载远程映像,但返回FileNotFoundException。尽管在重新启动该应用程序后,它仍能够从服务器获取新图像。但是在同一实例中进行签名更新时,它将带有FileNotFound返回。
这是我的一般Glide电话外观
GlideApp
.with(mContext)
.asBitmap()
.error(error_image)
.placeholder(placeholder_image)
.signature(new IntegerVersionSignature(group_image_meta_data)
.load(new GlideUrlWithQueryParameter(baseUrl, url)
.listener(new RequestListener<Bitmap>() {
//
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
Log.e(TAG, "Error Loading ", e);
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
Log.d(TAG, "Loaded image successfully");
return false;
}
})
.into(groupImage);
这是我得到的例外-
错误加载 com.bumptech.glide.load.engine.GlideException类:无法加载资源 原因有1: java.io.FileNotFoundException(pre_signed_url) 致电GlideException#logRootCauses(String)了解更多详细信息 原因(1之1):com.bumptech.glide.load.engine.GlideException类:提取数据失败,java.io.InputStream类,REMOTE
我正在使用Glide 4.8.0
我缺少任何重要的步骤吗?或任何其他人可以提供的其他指针。
谢谢!