基础对比
glide | fresco | Picasso | |
---|---|---|---|
地址 | https://github.com/bumptech/glide | https://github.com/facebook/fresco | https://github.com/square/picasso |
License | BSD, part MIT and Apache 2.0 | MIT | Apache 2.0 |
star | 28k | 16k | 17.2k |
developer | Google(bump) | Square | |
大小 | 100k | 1M | 2-3 |
version | V4.11.0 | V2.1.0 | V2.71828 |
支持能力对比
glide | fresco | Picasso | |
---|---|---|---|
支持webP | 是 | 是 | 是 |
视频缩略图 | 是 | 是 | 否 |
Cache | 是 | 是 | 是 |
上手难度 | 易 | 中 | 易 |
最低版本 | 14 | 9 | 14 |
wrap_content | 支持 | 不支持 | 支持 |
内存对比
glide | fresco | Picasso | |
---|---|---|---|
静态大图 | 24.2->23.8 | 23.3->22.7 | 24.7->24.3 |
gif | 34.6->34.1 | 27.2->26.7 | 不支持 |
加载gif和webp fresco都需要引入新包才能支持
fresco不支持自动识别gif glide可以识别自动加载
fresco 虽然fresco内存开销小于glide,但是使用了native 内存
- Java Heap是对于Java 虚拟机而说的,一般的大小上限是 16M 24M 48M 76M 具体视手机而定。
- Native Heap是对于C/C++直接操纵的系统堆内存,所以它的上限一般是具体RAM的2/3左右。
- Native heap增长到比较大的值的时候,占用了大量的RAM,可能会被memory killer杀掉
- 使用adb shell dumpsys meminfo + packagename/pid 查看进程的内存信息
优缺点:
glide
- 多种图片格式的缓存,适用于更多的内容表现形式(如Gif、WebP、缩略图、Video)
- 生命周期集成(根据Activity或者Fragment的生命周期管理图片加载请求)
- 高效处理Bitmap(bitmap的复用和主动回收,减少系统回收压力)
- v3 v4 变化大
fresco
- 最大的优势在于5.0以下(最低2.3)的bitmap加载。在5.0以下系统,Fresco将图片放到一个特别的内存区域(Ashmem区)
- 大大减少OOM(在更底层的Native层对OOM进行处理,图片将不再占用App的内存)
- 适用于需要高性能加载大量图片的场景
- 用法稍显复杂,可迁移性差
- 底层涉及c++领域,阅读源码深入学习路线陡峭
- fresco 不支持链式调用