Volley和Picasso的比较

参考

(1)对请求对象的封装不同。

Volley:在Volley中,请求会直接封装在Reqeust当中
Picasso:在Picasso中,一个请求会依次封装成ReqeustCreator,Reqeust,Action等不同状态,其中ReqeustCreator是用于创建Reqeust,在ReqeustCreator中可以设置图片的地址,大小,是否居中,是否旋转,图片的后处理等等参数;当用户调用into(Target)方法的时候,通过RequestBuilder中的build()方法,会构造出Reqeust,然后构造出对应的Action方法,提交至Dispatcher队列进行处理。

(2)Dispatcher不同

Volley:
在Volley中,Dispatcher包括CacheDispatcher和NetworkDispatcher两部分,其中CacheDispatcher只有一个线程,而NetworkDispatcher默认会有4个线程在执行。
Picasso:
在Picasso当中,所有的任务的分发都是通过一个Dispatcher,即DispatcherThread工作线程来完成。

(3) 添加请求方式不一样

Volley:
Volley是通过阻塞队列实现。
Picasso:
Picasso添加任务是通过Handler,将Action作为消息的Message中的object的进行传递。

(4)Cache不一样

MemoryCache:
Volley: Volley中,对于普通的任务,并没有设定MemoryCache;而服务于图片的ImageLoader,其中明确要求我们实现一个MemoryCache以供使用。
Picasso: Picasso由于其设计服务对象就是图片,因此其本身自带的Cache就是MemoryCache。
DiskCache:
Volley中默认实现的Cache就是DiskBasedCache,根据网络请求结果根据情况保存在Cache当中。
Picasso其本身并不支持DiskCache,其DiskCache依赖于其网络库,默认的为Square自己的OKHttp,okhttp内部已经实现有网络Cache。

(5)支持的请求来源不一样

Volley:Volley仅支持从网络上访问图片或者其他的资源。
Picasso: Picasso支持从网络,File,Resource,Asserts中加载图片。

(6)支持请求的对象不一样。

Volley:Volley支持图片,Json,String等等各种各样的网络请求,而且可以很容易的扩展自己的实现。
Picasso:Picasso仅仅支持图片。

(7)图片后续的处理不一样

Volley: 仅仅可以在收到请求完成的回调之后,自己进行图片的后处理。
Picasso: Picasso可以通过注册Transformer的形式,对获取的图片进行后续处理,完成之后再通知完成动作。

(8)Http策略不一样

Volley: HttpUrlConnection和HttpClient
Picasso: HttpUrlConnection和okHttp

(9)Volley支持同步请求

你可能感兴趣的:(Volley和Picasso的比较)