volly网络框架

volly网络框架,第1张

什么是volly框架

所谓Volley,它是2013年Google I/O上发布的一款网络框架,基于Android平台,能使网络通信更快,更简单,更健全。

//他的优点

1)默认Android2.3及以上基于HttpURLConnection,2.3以下使用基于HttpClient;(2)符合Http 缓存语义 的缓存机制(提供了默认的磁盘和内存等缓存);(3)请求队列的优先级排序;(4)提供多样的取消机制;(5)提供简便的图片加载工具)

缺点就是  如果传输量大就不能使用volly  因为他属于轻量级的框架  他只适合网络通信频繁  并且数据量小的数据

怎么使用

1导入依赖

 implementation 'com.mcxiaoke.volley:library:1.0.19'

先请求一个对列  Volly.newRequest(?)

一定要在清单文件中注册

再请求http中的request对象  Stringrequest  有一个成功respone方法和onerro失败的方法

然后将这个对象放入队列中   

通过什么方式让外界拿到呢   那我就通过接口回调吧

Volley 现在虽然比较少用了,但有些老项目还是有在使用,新项目一般都是使用OkHttp,Volley在Android 2.3以上使用的是 HttpURLConnection ,而2.3以下则是使用 HttpClient 实现,而 HttpClient 在Andoid6.0时已经被废弃了,但Volley内部是统一返回HttpClient的响应类的,所以还是需要加上HttpClient的依赖。

OkHttp 拥有比 HttpURLConnection 和 HttpClient 更好的性能,而 Volley 可以兼容 HttpURLConnection 和 HttpClient ,那是否可以兼容 OkHttp 呢?如果可以兼容,那以前使用 Volley 的请求,将拥有更好的性能

答案是可以的!经过上一篇 Volley 源码分析 ,我们知道Volley的兼容不同的网络请求框架是通过一个 HttpStack 接口来实现的,不同的网络请求框架只要创建一个实现类,在创建请求队列 Volley.newRequestQueue(context, stack) 的时候传入即可,这种模式叫策略模式,通过一个接口来解耦具体的网络请求框架,不同框架的具体实现逻辑都内聚在具体实现类中。

Volley只是一个网络请求工具框架,并不是底层的网络请求实现,所以Volley对标的是例如Retrofit、OkGo、RxHttp等,他们是封装了底层的网络请求实现的上层框架

底层网络请求实现,一般有HttpURLConnection、HttpClient还有OkHttp,它们一般是使用Socket来对Http协议进行实现,所以更加底层

简单来回顾一下 HttpStack 接口,HttpStack接口内只有一个 performRequest() 方法,该方法在子线程中回调,所以需要进行同步网络请求,返回统一的HttpResponse响应实例即可

创建一个类 OkHttpStack ,使用OkHttp发起请求的具体实现都在该类中,具体要复写 performRequest() 方法,具体做了以下几件事:

Groovy 的基本语法

方法调用

apply plugin: 'com.android.application'

以上语句中的apply是一个方法,给它传递了一个参数plugin,plugin 的值是'com.android.application'。

如果有多个参数,则以逗号隔开,例如

compile name: 'volley', ext: 'aar'

闭包

Groovy中花括号包含的部分成为一个闭包(Closure)。例如下面的代码

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_7

targetCompatibility JavaVersion.VERSION_1_7

}

compileOptions 是一个 Method, 它的参数是一个闭包,这个闭包内依次执行了两个方法 --sourceCompatibility 和targetCompatibility, 参数都是JavaVersion.VERSION17。

闭包也可以嵌套包含

repositories {

flatDir {

dirs 'libs'

}

}

常见使用方法

包依赖(aar)

使用aar时可以分为两种情况

① aar位于本地目录

首先在 android 的参数闭包中添加调用方法 repositories

repositories {

flatDir {

dirs 'libs'

}

}

然后在 dependencies 的参数闭包中添加

compile name: 'volley', ext: 'aar'

② aar位于远程仓库

这里以maven为例,当然也可以使用其他类型的仓库,例如 Ivy。

只需要在jar包引用方式后面添加一个@aar就可以了

compile 'com.alibaba:fastjson:latest.integration@aar'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11574203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存