【发布时间】:2020-08-19 06:40:52
【问题描述】:
这就是我下载图片网址的方式
StorageReference gsReference = FirebaseStorage.getInstance().getReference();
gsReference.child(<image_path>).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// use fresco to load images
}
});
然后我像这样使用 Fresco:
StorageReference gsReference = FirebaseStorage.getInstance().getReference();
gsReference.child(<image_path>).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
ImageRequest request1 = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.setProgressiveRenderingEnabled(true)
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request1)
.setControllerListener(this)
.setOldController(imageView.getController())
.build();
imageView.setController(controller);
}
});
当用户离线时,我失去了 Fresco 缓存功能,因为我必须下载图像 url 才能在 fresco 中使用。所以图片网址永远不会加载。
如何从 fresco 的缓存中获取图片,这样即使离线也可以加载图片而无法检索下载网址?
【问题讨论】:
-
我不确定我是否理解这个问题。如果用户处于离线状态,您还希望从这段不起作用的代码中得到什么?
-
@FrankvanPuffelen 当用户离线时,我仍然想获取存储在 Fresco 缓存中的图像。
-
谢谢!您共享的代码中的哪一部分现在没有朝着这个方向努力?
-
@FrankvanPuffelen 代码中的每一件事都有效。我只是不知道如何在没有互联网连接的情况下在 Fresco 中获取缓存的图像,因为图像 url 是从 firebase 存储 api 获取的。为了获取缓存图像,我们需要将图像 uri 传递给 Fresco api。
标签: android firebase firebase-storage fresco