Glide和Picasso的优缺点比较

picasso和Glide结构设计

  • picasso
    Glide和Picasso的优缺点比较_第1张图片

  • glide
    Glide和Picasso的优缺点比较_第2张图片

picasso和Glide加载图片代码使用结构

  • picasso
Picasso.with(context)  
    .load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg")  
    .into(ivImg);  
  • glide
Glide.with(context)  
    .load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg")  
    .into(ivImg); 

Glide和Picasso的优缺点比较_第3张图片
虽说看上去都一样,但是Glide更易用,因为Glide的with方法不光接受Context,还接受Activity 和 Fragment。
Activity 和 Fragment作为参数的好处:图片加载会和Activity 和 Fragment的生命周期一致 。比如在pause状态时暂停加载,resumed时又重新加载。建议传参的时候传Activity 和 Fragment

picasso和Glide图片格式

Glide和Picasso的优缺点比较_第4张图片

  • picasso默认的是ARGB_8888
  • glide默认Bitmap格式是RGB_565
    当然我们也可以创建一个新的GlideMoudle将bitmap格式转换成ARGB_8888

picasso和Glide各自亮点

  • Glide

    1.图片缓存->媒体缓存
    不仅是一个图片缓存,它支持 Gif、WebP、缩略图。甚至是 Video,所以更该当做一个媒体缓存。
    2.支持优先级处理
    3.与 Activity/Fragment 生命周期一致,支持 trimMemory
    Glide 对每个 context 都保持一个 RequestManager,通过 FragmentTransaction 保持与 Activity/Fragment 生命周期一致,并且有对应的 trimMemory 接口实现可供调用。

  • picasso

    1.自带统计监控功能(支持图片缓存使用的监控,包括缓存命中率、已使用内存大小、节省的流量等)
    2.支持优先级处理(每次任务调度前会选择优先级高的任务,比如 App 页面中 Banner 的优先级高于 Icon 时就很适用)
    3.支持延迟到图片尺寸计算完成加载
    4.支持飞行模式、并发线程数根据网络类型而变
    5.“无”本地缓存 (无”本地缓存,不是说没有本地缓存,而是 Picasso 自己没有实现,交给了 Square 的另外一个网络库 okhttp 去实现,这样的好处是可以通过请求 Response Header 中的 Cache-Control 及 Expired 控制图片的过期时间。)

picasso和Glide内存需求区别

我更喜欢Glide,因为它远比Picasso快,虽然需要更大的空间来缓存。

picasso和Glide缓存区别

  • Picasso和Glide在磁盘缓存策略上有很大的不同。Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的。

将ImageView调整成不同大小,但不管大小如何Picasso只缓存一个全尺寸的。Glide则不同,它会为每种大小的ImageView缓存一次。

你可能感兴趣的:(android)