美文网首页
Volley和Picasso的比较

Volley和Picasso的比较

作者: shuixingge | 来源:发表于2016-08-04 08:54 被阅读66次

    参考

    (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的比较

          本文链接:https://www.haomeiwen.com/subject/vxjcsttx.html