为什么通常将Volley库与okHttp库结合使用?

4
为什么通常将Volley与okHttp结合使用?为什么要这样做?
例如:
   OkHttpClient client = new OkHttpClient();
   client.networkInterceptors().add(new StethoInterceptor());
   mRequestQueue = Volley.newRequestQueue(context, new OkHttpStack(client));
2个回答

9
Volley在创建RequestQueue时需要一个HttpStack。
如果您没有提供,则Volley将根据您的API级别创建堆栈:如果您运行的是API 9或更低版本,则基于AndroidHttpClient。 如果您运行的是API 10或更高版本,则基于HttpURLConnection。 OkHttp是一种现代、快速和高效的Http客户端,支持HTTP/2和SPDY,并为您执行许多操作,如连接池、gzip压缩、缓存等。 OkHttp就像传输层一样。
OkHttp使用Okio,这是一个补充java.io和java.nio的库,使访问、存储和处理数据变得更加容易。
基于这些原因,我建议您使用OkHttp Stack。我正在使用此选项,它不使用okhttp-urlconnection。
我写了一篇关于在Android网络中使用OkHttp、Volley和Gson的文章,您可能会感兴趣。

即使在Android 4.4内部使用OkHttp,我们是否仍需要HttpStack? - rcde0
@rcde0 KitKat在几年前发布,可能具有非常旧的OkHttp版本,这不是您问题的答案,但要牢记这一点。 - Sotti
@ Sotti, 我读了你的好文章,但是在添加以下代码后,我的Android Studio仍然找不到类 - "OkHttpStack":compile 'com.google.code.gson:gson:2.7' compile 'com.squareup.okhttp3:okhttp:3.5.0' compile 'com.android.volley:volley:1.0.0' - CR Sardar
@CRSardar,在我的回答中(就在上面的链接中,你需要提供一个OkHttpStack)。 - Sotti

0

阅读this,了解为什么okhttp适合传输 - 然后你就会知道为什么它经常与volley结合使用


1
是因为 Volley 无法处理 HTTP 请求吗? - user5018827
关注点分离是关键 - ligi
1
这并没有真正解释为什么我们需要 Volley。 - Leo supports Monica Cellio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接