是否可以在Fresco中手动将位图添加到BitmapMemoryCache中?

时间:2015-10-27 13:16:34

标签: android caching fresco

我需要手动将位图添加到缓存中,指定URI(作为键)。如果下载图像的请求URI与密钥匹配,我需要管道从缓存加载位图而不是进行网络调用。

我找到了这种方法Fresco.getImagePipelineFactory().getBitmapMemoryCache().cache( cacheKey, closeableReference)。但是如何获得一个对任意位图的closableReference。请帮忙。谢谢。

2 个答案:

答案 0 :(得分:1)

如果您要使用Fresco加载图像 - 是的:

public class OperationPostprocessor extends BasePostprocessor {
  private int myParameter;

  public OperationPostprocessor(int param) {
    myParameter = param;
  }

  public void process(Bitmap bitmap) { 
    doSomething(myParameter);
  }

  public CacheKey getPostprocessorCacheKey() {
    return new MyCacheKey(myParameter);
  }
}

缓存键是 MyCacheKey(myParameter)

您可以在形成ImageRequest时使用它:

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(photoUri)
                .setPostprocessor(new OperationPostprocessor())
                .build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setOldController(simpleDraweeView.getController())
                .setImageRequest(request)
                .build();
simpleDraweeView.setController(controller);

在这里,您将使用后处理器: .setPostprocessor(new OperationPostprocessor())

资源:

一个细节:这里将使用fresco缓存,但在 Postprocessor.process(Bitmap)方法中,我认为,您可以将位图添加到自己的缓存中。< / p>

答案 1 :(得分:0)

我写了一篇文章解释了对Fresco here的观察/经验。

同时在medium

查看此帖子

它也解决了上述问题。