Fresco
优点:
- 图片存储在安卓系统的匿名内存, 而不是虚拟机的堆内存中
所以, 应用程序有更多的内存使用, 不会因为图片加载而导致 oom, 同时也减少垃圾回收器频繁调用回收 Bitmap 导致的界面卡顿, 性能更高. - 渐进式加载图片, 支持图片从模糊到清晰加载
- 图片可以以任意的中心点显示在 ImageView, 而不仅仅是图片的中心.
- 图片改变大小也是在 native 进行的, 不是在虚拟机的堆内存, 同样减少 OOM
- 很好的支持 GIF 图片的显示
缺点: - 框架较大, 影响 Apk 体积
- 使用较繁琐
Glide
优点
Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图。甚至是 Video
生命周期集成
通过设置绑定生命周期,我们可以更加高效的使用Glide提供的方式进行绑定,这样可以更好的让加载图片生命周期动态管理起来
高效的缓存策略
A. 支持Memory和Disk图片缓存
B. Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸
比如你 ImageView 大小是200200,原图是 400400 ,而使用 Glide 就会缓存 200200 规格的图,非常灵活 & 加载速度快
C. 内存开销小
默认的 Bitmap 格式是 RGB_565 格式
Android关于图片内存计算,共有四种,分别是:
ALPHA_8:每个像素占用1byte内存
ARGB_4444:每个像素占用2byte内存
ARGB_8888:每个像素占用4byte内存(默认,色彩最细腻=显示质量最高=占用的内存也最大)
RGB_565:每个像素占用2byte内存(8bit = 1byte)
举例说明:一个32位的PNG=ARGB_8888=1204x1024,那么占用空间是:1024x1024x(32/8) =
4.2 缺点
使用方法复杂
由于Glide其功能强大,所以使用的方法非常多,其源码也相对的复杂
包较大
区别
对于一般App来说,Glide完全够用,而对于图片需求比较大的App,为了防止加载大量图片导致OOM,Fresco 会更合适一些。并不是说用Glide会导致OOM,Glide默认用的内存缓存是LruCache,内存不会一直往上涨。