我们已经按照此处的文档http://frescolib.org/docs/configure-image-pipeline.html中提到的步骤设置了壁画。
ImagePipelineConfig config = ImagePipelineConfig
.newBuilder(this)
.setBitmapsConfig(Bitmap.Config.RGB_565)
.setRequestListeners(requestListeners)
.setDownsampleEnabled(true)
.build();
Fresco.initialize(this, config);
根据需要在应用程序onCreate中对其进行一次设置。来自网络的图像很少,大小无法匹配,因此我们必须将setDownsampleEnabled与resize选项一起使用。
以下是用于加载图像的代码-
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(asseturl))
.setProgressiveRenderingEnabled(true)
.setResizeOptions( new ResizeOptions(width,height))
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(sdv.getController())
.setTapToRetryEnabled(true)
.build();
sdv.setController(controller);
在Recyclerview的onViewDetachedFromWindow和onViewRecycled方法中将控制器设置为null。
在运行应用程序的几分钟内,使用的内存非常高。
探查器内存图看起来不太漂亮。
附加了堆转储以供参考。
还检查了日志中的壁画。日志中提到同一图像多次下采样。我已经验证了对图片的请求不过一次。
附加了Logcat快照