Android框架对比

本文对比了Android中流行的网络请求与图片加载库,包括Volley、NoHttp、OkHttp、Picasso、Glide及Fresco的特点与适用场景。讨论了各自的优缺点,并提供了选择建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Volley

Volley用的HttpClient来解析的, Android6.0删除了HttpClient后, 我们在6.0下也不能使用Volley的源码了

NoHttp

NoHttp封装了: 文件下载, 断点续传, 304缓存, 302/303传参数, 传文件, 请求头, 多文件上传, 大文件上传, Cookie自动管理等多种功能, 这些是Volley而没有。
NoHttp兼容2.0-6.0以上
Android4.4之后NoHttp也是使用OkHttp做底层的.

OkHttp

网络访问类

Volley与Universal Image Loader
volley:设计目标是数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现非常糟糕。兼容性更好。
Universal Image Loader:功能强大,图像加载灵活和高度可定制的仪表,缓存和显示。

图片处理类

综述
Picasso 所能实现的功能 Glide 都能做到,只是所需设置不同。两者的区别是 Picasso 比 Glide 体积小很多且图像质量比 Glide 高,但Glide 的速度比 Picasso 更快,Glide 的长处是处理大型的图片流。
Fresco 可以说是综合了之前图片加载库的优点,其在5.0以下的内存优化非常好,但它的不足是体积太大。

Glide
优点
(1) 内存友好;(2) 支持优先级处理;(3) 与 Activity/Fragment 生命周期一致,支持 trimMemory;(4) 支持 okhttp、Volley。

缺点

与Picasso极为相似。Glide 更易用with 方法接受类型多;能随着Context的生命周期变动;
相同图片Glide 加载的图片质量要差于Picasso但内存消耗少很多,Glide 默认的 Bitmap 格式是 RGB-565 ,比 ARGB-8888 格式的内存开销要小一半。第二个原因, Glide 加载的大小和 ImageView 的大小是一致的,Picasso 是加载了全尺寸的图片到内存,然后让 GPU 来实时重绘大小;磁盘缓存方面,Picasso 缓存的是全尺寸的,而 Glide 缓存的是跟 ImageView 尺寸相同的。相同图片,不同大小会缓存多次。一图多大小显示时,内存占用高;

能显示GIF图;可以将任何的本地视频解码成一张静态图片;可以配置图片显示的动画,而 Picasso 只有一种动画:fading in;可以使用 thumbnail()产生一个你所加载图片的 thumbnail。

Picasso
优点
(1) 自带统计监控功能;(2) 支持优先级处理;(3) 支持延迟到图片尺寸计算完成加载;(4) 支持飞行模式、并发线程数根据网络类型而变;(5) “无”本地缓存。缓存是由 底层okhttp 去实现。

缺点

ImageLoader
优点
(1) 支持下载进度监听;(2) 可以在 View 滚动中暂停图片加载;(3) 默认实现多种内存缓存算法 这几个图片缓存都可以配置缓存算法,不过 ImageLoader 默认实现了较多缓存算法(如 Size 最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等。);(4) 支持本地缓存文件名规则定义。

缺点

Fresco
Facebook开源的。内存方面的表现极为优秀。Fresco 的最大亮点在于它的内存管理。Fresco 支持图像的渐进式呈现,渐进式的图片格式先呈现大致的图片轮廓,然后随着图片下载的继续,逐渐呈现清晰的图片,这在低网速情况下浏览图片十分有帮助。另外,Fresco 支持加载 gif 图,支持 WebP 格式。

它是基于自定义控件的,要使用控件SimpleDraweeView来显示图片;不支持宽高同时设置为wrap_content,默认强制设置宽高;在activity中加载图片显示,Fresco 不支持相对路径的URI;

标题

Anko
用 Kotlin语言编写的.开发Android应用更简单更快捷的库

总结

OkHttp和HttpURLConnection一样, 是面向java的, 而且是做socket层的事情的, 使用时要在子线程调用, 通过handler发送结果到主线程. 而NoHttp和Volley不是做socket层的东西. 直接在主线程就可以调用, 拿到结果后直接更新UI, 不需要用handler去发送, 很简单.

框架选择:选最适合项目的,选大多数人选择的,选简单易用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值