图片框架MWPhotoBrowser详解(二)

2018-10-11  本文已影响35人  明若晴空

(二)MWPhotoBrowser图片加载过程及内存优化

进入MWPhotoBrowser框架后,主要的操作都在reloadData方法中:


reloadData方法.jpg
重置:

其中,第二步将_photos中的除了当前图片的所有图片释放并移除。其中调用了 MWPhoto的 unloadUnderlyingImage方法,这个方法是将图片浏览器中所有图片(或含当前图片)释放。

第四步, performLayout方法中调用tilePages方法在首次进入时,会对管理图片内存的两个重要属性 visiblePages和recycledPages初始化


内存优化-代码块.jpg

自己总结成流程图如下:

内存优化-首次进入-流程图.png

在代码Line812, [self configurePage:page forIndex:index];会对第一张图片进行加载,并在加载完成后发出加载完成的通知。
加载过程:

图片加载过程-代码块.jpg

加载图片的流程图如下:

图片加载过程-流程图.png

加载完成时发出通知的过程总结为流程图如下:

图片加载完成发出通知.png

其中的加载相邻图片,在第一次进入时,会加载第二张图片。而之后的加载相邻图片都是在滑动过程中进行的,也就是在 scrollViewDidScroll方法中,根据当前页来加载当前页前后两张的图片,对应代码块如下:

加载相邻图片的代码块.jpg

而对于图片浏览滑动时的 MWZoomingScrollView的复用,主要是 visiblePages和recycledPages这两个集合来管理的。当前可见的MWZoomingScrollView存放在visiblePages中,其一般数量不会超过2,而recycledPages中存放的MWZoomingScrollView用来循环利用,可能是新创建的MWZoomingScrollView,也可能是不可见的废弃的MWZoomingScrollView,一般用于循环的数量也不会超过2。

下面我们在操作过程中,对应相应代码块:

内存优化-代码块.jpg

可以观察到这两个参数的变化,理解其内存优化的具体过程:

1、首次进入
2、第一次左滑过程中:
3、第一次左滑完成:
4、第二次左滑过程中:
5、第二次左滑完成:

由此可以看出, visiblePages和recycledPages这两个集合是如何管理MWZoomingScrollView图片加载时的内存和循环利用的。

这个思路并不难,但是要把每一步的逻辑处理做到完美,还需要注意很多细节。

上一篇 下一篇

猜你喜欢

热点阅读