图片相关,主要想记录一下 Fresco 跟Glide 相关的一些内容。
优缺点对比
优点
Glide
- 多种图片格式的缓存,适用于更多的内容表现形式 (如 Gif、WebP、缩略图、Video)
- 生命周期集成 (根据 Activity 或者 Fragment 生命周期管理图片加载请求)
- 高效处理 Bitmap (bitmap 的复用和主动回收,减少系统回收压力)
- 高效的缓存策略,灵活 (Picasso 只会缓存原始尺寸的图片,Glide 缓存的事多种规格),加载速度快且内存开销小 (默认 Bitmap 格式的不同,是的内存开销是 Picasso 的一般)
Fresco
- 最大的优势在于5.0以下(最低2.3)的bitmap加载。在5.0以下系统,Fresco将图片放到一个特别的内存区域(Ashmem区)
- 大大减少OOM(在更底层的Native层对OOM进行处理,图片将不再占用App的内存)
- 适用于需要高性能加载大量图片的场景
缺点
Glide
- 没有文件缓存
- Java heap 比 Fresco 高
Fresco
- 包较大(2~3M)
- 用法复杂
- 底层涉及c++领域,阅读源码深入学习难度大
Glide源码解析
Glide 源码基本用法分为三步:with()、load()、into()。
with()
在 with 中传入一个 Application 类型的对象或者非 Application 类型的参数,会向当前的 Activity 添加一个隐藏的 Fragment,用来监听当前的生命周期。
如果在非主线程中使用 Glide,不管传入的是 Activity 还是 Fragment,都会被强制当成 Application 来处理。
with 方法主要作用是得到一个 RequestManager 对象,监听生命周期。
load()
最后会返回一个 RequestBuilder 对象。RequestBuilder 中包含了 Glide 绝大多数的 API。
into()
资料https://blog.csdn.net/guolin_blog/article/details/53939176