2018-09-17
前言
在实际开发过程中 , 我们都要用到图片加载 , 从最开始的Imageloader , 到后来相继推出的Glide , Picasso , Fresco . 功能更加强大 , 使用也更加方面, 但是它们使用场景基本相同 , 同样也存在一些区别 . 总之 , 没有最好的框架, 只有适合自己的框架.
三大图片加载框架
- picasso
- Glide
- Fresco
介绍
Picasso :
和Square的网络库一起可以发挥最大作用 , 因为Picasso可以选择将网络请求的缓存部分交给okHttp实现.
Glide :
模仿了Picasso的API , 而且在Picasso的基础上加了很多的扩展 (比如对gif的支持), Glide默认的Bitmap格式是RGB_565 , 比Picasso默认的ARGB_8888格式的内存开销要小一些 ; Picasso缓存的是全尺寸的 , 而Glide缓存的是和ImageView尺寸相同的
Fresco : 最大的优势在于支持5.0以下(最低2.3)的bitamp的加载 . 在5.0以下系统中 , Fresco将图片放到一个特别的内存区域(Ashmen区) . 当然 , 在图片不显示的时候 , 占用的内存会自动释放. 这会使得APP更加流畅 , 减少因图片内存占用而引起的OOM . 为什么说是5.0以下系统啦 , 因为5.0以后系统默认是存储在Ashmen区了 .
总结
Picasso能够实现的功能 , Glide都可以做 . 但是Picasso体积比Glide要小很多 , 如果项目中网络请求本身使用的是okHttp或者retrofit , 那么建议使用Picasso . Glide的好处是对大型的图片流 , 比如gif , video,支持较好 .
Fresco在5.0以下的内存优化比较好 ,代价是体积比较大 , 按照体积比较 Fresco > Glide >Picasso
在实际开发过程中, 通常是将Fresco自己封装一下 ,直接使用它的Bitmap层.