0

我想知道是否有一种方法可以在不从服务器重新加载的情况下替换 Fresco 中的图像。我有一个应用程序,可以让用户修改图像,然后将新图像上传到服务器。但是,对于 Fresco 的工作方式,我需要上传新图像,从缓存中删除当前图像,然后使用新 url 从服务器检索它,然后将其存储在缓存中。我似乎无法找到一种仅使用 url 和位图作为键和值(如果可能的话)将图像插入缓存的方法。

4

2 回答 2

1

Fresco 目前不支持这个开箱即用,但你可以尝试这样的事情:

// remove the image from the caches (both disk and memory)
CacheKey diskCacheKey = new SimpleCacheKey(uri.toString());
Fresco.getImagePipelineFactory().getMainDiskStorageCache().remove(diskCacheKey);
Fresco.getImagePipeline().evictFromMemoryCache(uri);

// fill the disk cache (note, memory cache will be filled automatically)
Supplier<FileInputStream> inputStreamSupplier = new Supplier<FileInputStream>() {
  @Override
  public FileInputStream get() {
    return new FileInputStream(path);
  }
};
EncodedImage encodedImage = new EncodedImage(inputStreamSupplier);
Fresco.getImagePipelineFactory().getMainBufferedDiskCache().put(diskCacheKey, encodedImage);

// re-set the image to the view
mSimpleDraweeView.setImageUri(uri);
于 2015-07-08T13:26:40.577 回答
0

第一的:

mSimpleDraweeView.setImageUri(null)删除缓存

第二:

mSimpleDraweeView.getHierarchy().setPlaceholderImage(drawable);放置一个drawable以显示本地图像;

于 2015-06-29T11:04:23.757 回答