fresco知识梳理
对于图片框架的学习最重要就是搞懂2个内容,一个是它的缓存机制,一个是他的生命周期管理。
fresco 简介
glide有FaceBook提供,github地址,glide默认使用ARGB_8888加载图片。
- 优点
- 功能强大,提供了各种效果的api
- 提供三级缓存,其中包括了图片解码之后的缓存BitMap,有利于图片的显示效率。
- 对于android5.0的系统fresco使用ashmem(匿名共享内存)来实现内存缓存,避免频繁GC。
- 支持gif。
- 缺点
- 框架体积较大。(2M多)
- 入侵性强,使用DraweeView显示图片组件。
缓存机制(三级缓存)
fresco会先查找BitMap缓存,没有找到就查找Byte[]缓存,还没找到就查找磁盘缓存,如果都没找到就发起网络请求了;之后将下载的图片在3个缓存中保存起来。
BitMap缓存(解码图片缓存)
- fresco会将原始图片解码缓存到ashmem内存。
- 如果想只加载视图区域大小的图片需要使用ResizeOptions,它会在图片未解码时对图片进行压缩。
Byte[]缓存(未解码图片缓存)。
- 同磁盘读取的图片会先转成Byte[]缓存起来。
磁盘缓存
网络获取图片
- 默认使用HttpURLConnection进行网络请求。
生命周期管理
参考:
glide解析