我需要手动将位图添加到指定 URI(作为键)的缓存中。如果下载图像的请求 URI 与密钥匹配,我需要管道从缓存中加载位图,而不是进行网络调用。
我找到了这个方法Fresco.getImagePipelineFactory().getBitmapMemoryCache().cache( cacheKey, closeableReference)
。但是如何获得对任意位图的 closableReference。请帮忙。谢谢你。
如果您使用 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())
资源:
一个细节:这里将使用壁画缓存,但我认为在Postprocessor.process(Bitmap)方法中,您可以将位图添加到自己的缓存中。