最近在做大图片放大显示功能(一页只显示一张的,支持手势放大缩小),发现网上很多的优化方式都不能完成我的要求,没办法,只能自己做个记录,记录下自己优化过程。其实使用SDWebImage加载图片,本身性能优化已经很不错了,但是经不住强大的需求啊~~必须加载原图!毕竟现在手机拍摄功能越来越好,当然图片本身也越来越大,所以显示的时候负担也越来越重。
大致打印信息只有:
PBItemCollectionServicer connection disconnected.
网上很多文章说这个错误时第三方库不是最新的造成的,这里就要看具体问题具体分析
开始记录下优化过程 ,
最常用的优化方式是在内存警告中加释放缓存的方法:
[[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];
或者
[[SDImageCache sharedImageCache] clearMemory];
优化1、网上可以查到的很多方法中最常用的:
[[SDImageCache sharedImageCache] setShouldDecompressImages:NO];
经过优化1的过程,一般用SDWebImage加载大尺寸图片可以保证流畅和内存相较安全
如果不起作用,说明有其他地方导致卡顿或者内存警告
优化2、如果是用滑动控件去加载的图片,那么需要考虑是否是图片刷新太频繁造成读取频繁手机负荷过大?
如果是UITableView和UICollectionView显示的,那么考虑下加载数据是在
- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath{}
还是在
- (void)collectionView:(UICollectionView*)collectionView willDisplayCell:(UICollectionViewCell*)cell forItemAtIndexPath:(NSIndexPath*)indexPath
两者区别我想各位小伙伴还是很清楚的
优化3:刷新不频繁又还有卡顿,那么是否是滑动过程控件的刷新和SDWebImage读取disk中图片同时进行增加了系统负担?
实际上这个情况很少见,但是也不是不可能,如果连续几张图片都是10M左右的超大图,在快速滑动状态下,就会出现这种情况
所以我们要做的就是尽量错开刷新图片和用户滑动的时间,比如在滑动过程中显示默认图片,滑动结束后,在进行显示,虽然一页只显示一张图片,但是也要做成列表展示时的优化。具体做法,小伙伴们应该有不少心得。
附上SDWebImage结束操作的方法:
[[SDWebImageManager sharedManager] cancelAll];
暂时只考虑到这么多~~
网友评论