今天在使用应用时发现,应用居然崩溃了!一看监听器发现,当列表滚动到底部后内存达到了63M以上后必定崩溃,以前怎么就没崩溃呢?怪事了,但是内存这么大肯定是有问题的!还是得解决一下内存高的问题。
优化方法是:
public static void displayImage(Uri uri, SimpleDraweeView draweeView){
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setResizeOptions(new ResizeOptions(DensityUtil.dip2px(120), DensityUtil.dip2px(120)))
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(draweeView.getController())
.build();
draweeView.setController(controller);
}
也就是对图片进行一个大小限制setImageRequest();,然后设置setOldController();再运行发现,当列表滚动到底部后内存居然只有20M左右了,很好!
另外,还需配置Fresco支持jpeg和png、webp等图片:
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
.setDownsampleEnabled(true)
.build();
Fresco.initialize(this, config);