我需要手动将位图添加到缓存中,指定URI(作为键)。如果下载图像的请求URI与密钥匹配,我需要管道从缓存加载位图而不是进行网络调用。
我找到了这种方法Fresco.getImagePipelineFactory().getBitmapMemoryCache().cache( cacheKey, closeableReference)
。但是如何获得一个对任意位图的closableReference。请帮忙。谢谢。
答案 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)