图片列表加载高分辨率图片造成卡顿和内存暴增的解决办法

项目中有页面是瀑布流,本猿美美的布完局,填上数据,mmp怎么这么卡顿,在导航栏上写了个FPS测试工具竟然在40左右徘徊,难道写代码的姿势不对?(绝不承认有bug!)

排查一番发现sb用户上传的高清大图,没有低于2M的,更sb的后台返给我的缩略图和原图都特别大,WTF???但是也不至于卡成这个样啊,一顿Google发现罪魁祸首是SDWebimage对图片解压缩操作非常耗内存,解决方案如下:
在viewDidLoad里关闭SDWebimage的解压缩操作

    SDImageCache *canche = [SDImageCache sharedImageCache];
    canche.config.shouldDecompressImages = NO;
    
    SDWebImageDownloader *downloder = [SDWebImageDownloader sharedDownloader];
    downloder.shouldDecompressImages = NO;

页面销毁再打开

- (void)dealloc
{
    SDImageCache *canche = [SDImageCache sharedImageCache];
    canche.config.shouldDecompressImages = YES;
    
    SDWebImageDownloader *downloder = [SDWebImageDownloader sharedDownloader];
    downloder.shouldDecompressImages = YES;
}

你会猛然发现,之前的FPS是这样的


图片列表加载高分辨率图片造成卡顿和内存暴增的解决办法_第1张图片
屏幕快照 2018-03-22 16.56.23.png

是这样的


屏幕快照 2018-03-22 16.56.29.png

用了我的解决方案是这样的


图片列表加载高分辨率图片造成卡顿和内存暴增的解决办法_第2张图片
屏幕快照 2018-03-22 16.56.05.png

以上。

你可能感兴趣的:(图片列表加载高分辨率图片造成卡顿和内存暴增的解决办法)