今天在使用应用时发现,应用居然崩溃了!一看监听器发现,当列表滚动到底部后内存达到了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);


本文转载:CSDN博客