再见,volley。你好square全家桶。

好久没有写博客了,因为前段时间在找工作,最近刚刚算是稍微稳定下来,在工作中我最近在学习百度地图,ArcGIS,OpenCV这些东西的用法,对以前自学的主流Android开发的知识用到的甚少,不过我自己也没有懈怠,在业余时间还是在学习主流的应用开发技术和编写代码。

本篇文章估计是我最后一次写有关Volley的,为什么这么说。主要是因为这个库,随着时间的推移,已经越来越显现出老态。大家可以发现,Volley这个Google自家出品的库已经更新的越来越慢,甚至是好久都没有什么重大改动。最明显的一点,也是我今天重点要说的就是对OkHttp的支持问题。

Google官方早就不建议使用HttpClient来完成网络请求,更是在Android 6.0版本中把它彻底从SDK中删除,而另一种方式HttpURLConnection虽然在高版本中没有明显bug,但是它以使用复杂著称,特别的难用。这时候square出品的okhttp则是力压两种原生的Http底层封装API,被众多开发者广泛的接受,不仅如此,据说Android4.4的源码中已经把默认的HttpURLConnection实现换成OkHttp实现了,可见Google官方已经承认了OkHttp的强大的存在。

从上面可以看出来,在2016年,特别是现在,都2016年年底,马上2017了,如果你的应用还没有用上OkHttp,那就真的有点落伍了。同样,如果一个网络封装库,它不支持OkHttp,那这个库就真的该让我们考虑考虑了。

什么?你说Volley支持OkHttp?那你一定是从知乎或者微信公众号过来的。今天我就来具体说明Volley在支持OkHttp的支持性上有多差。

首先,在OkHttp 2.x时代,Volley的确是全面支持OkHttp,你编写一个OkHttpStack类,用它继承Volley的HurlStack类,然后短短几十行代码就可以写出一个OkHttpStack类,如下所示:

package com.icon.app.util;

import com.android.volley.toolbox.HurlStack;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.OkUrlFactory;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * An {@link com.android.volley.toolbox.HttpStack HttpStack} implementation
 * which uses OkHttp as its transport.
 */

public class OkHttpStack extends HurlStack {

    private final OkUrlFactory okUrlFactory;

    public OkHttpStack() {
        this(new OkUrlFactory(new OkHttpClient()));
    }

    public OkHttpStack(OkUrlFactory okUrlFactory) {
        if (okUrlFactory == null) {
            throw new NullPointerException("Client must not be null.");
        }
        this.okUrlFactory = okUrlFactory;
    }

    @Override
    protected HttpURLConnection createConnection(URL url) throws IOException {
        return okUrlFactory.open(url);
    }

}

基本思想就是利用了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值