所谓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'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)