Android Retrofit2+OkHttp3+RxJava 三联合
2017-02-28 12:53
134 查看
最近项目里要用到网络 框架,这个3组合最近比较火,我也拿来试试水;得出以下几点个人看法;
像android、iOS 客户端 上的应用,离开网络 立马就缺少了灵气,本来一个鲜活的应用,如花朵一样盛放着,他需要网络的支持,服务器的培育;
问题:如图所示
请求地址: http://apis.juhe.cn/cook/query.php
分别单独使用 OkHttp3、Retrofit2、RxJava,然后在合起来使用,通过这样的方式来 认识 这个组合;
首先要知道 OkHttp3、Retrofit2、 都是网络请求库
一、OkHttp3
二、Retrofit2
Retrofit2的使用大大简化了 我们okhttp 的使用,我的理解Retrofit2的诞生就是为了简化okhttp而来,他的使用依赖okhttp,是依赖关系
1、Retrofit2使用
三、RxJava
RxJava就是处理异步的一个库,最基本是基于观察者模式来实现的。通过Obserable和Observer的机制,实现所谓响应式的编程体验。 RxAndroid是RxJava在Android上的一个扩展;
也就是说,利用Obserable和Observer 我们可以很好的实现异步请求;
在android中、凡是与 UI相关的操作必须放到主线程。而我们往往会将耗时的操作、比如网络请求、放到子线程去处理,处理完后又要更新UI,这时候RxAndroid就派上了用场,具体的使用,这里就不说了,可以参考http://blog.csdn.net/chen_zhang_yu/article/details/52900725这个文档;
这三者、也可以说成是两者、一个是网络请求、一个是处理异步 更新UI;第一个OkHttp3可以单独使用、Retrofit2的使用建立在OkHttp3的基础上,RxJava也可以单独使用;
由于网络需求、以及异步更新、这三者可以结合在一起使用;但是这里要警记:任何第三库的出现,它是专门为解决某一个问题而产生的,也就是它并不完全的适用于任何场景,如果想要提高自己的应用的质量,还需思考清楚我们的应用需求,跟第三库的能力是否吻合,或者吻合成度有多高,这些都是需要考虑进去的,不要一味的因为其流行,就非要强制我们的应用中使用;
像android、iOS 客户端 上的应用,离开网络 立马就缺少了灵气,本来一个鲜活的应用,如花朵一样盛放着,他需要网络的支持,服务器的培育;
问题:如图所示
请求地址: http://apis.juhe.cn/cook/query.php
分别单独使用 OkHttp3、Retrofit2、RxJava,然后在合起来使用,通过这样的方式来 认识 这个组合;
首先要知道 OkHttp3、Retrofit2、 都是网络请求库
一、OkHttp3
简单使用方式: 这是我们从网络请求到数据 、在放UI的一般操作,这是OkHttp3的单独使用方式
a、 OkHttpClient client=new OkHttpClient();//通过他来发送请求,接受响应 b、 //请求 、采用get请求 、请求一个url 搞定: http://apis.juhe.cn/cook/query.php?key="" Request request=new Request.Builder().url(url).build(); c、 //执行 client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { d、//请求失败 } @Override public void onResponse(Call call, Response response) throws IOException { //请求完成 成功 e、 //转model response---》model f、 //放在UI上 } });
上面我们看到了okhttp 请求 一般做这几部 1、请求 地址 参数 2、响应 { 成功: a、son-》model 转模型 b、到UI主线程更新UI }
二、Retrofit2
Retrofit2的使用大大简化了 我们okhttp 的使用,我的理解Retrofit2的诞生就是为了简化okhttp而来,他的使用依赖okhttp,是依赖关系
1、Retrofit2使用
a、//Retrofit 创建 设置基本的 url 服务器地址 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://apis.juhe.cn/") .build(); b、//请求 请求单独的写在接口里面 public interface IHttpServiceRequest { //获取菜单接口 @GET("/cook/query.php") Call getFood(@Query("key")String key); c、执行请求 IHttpServiceRequest service retrofit.create(IHttpServiceRequest.class); }
三、RxJava
RxJava就是处理异步的一个库,最基本是基于观察者模式来实现的。通过Obserable和Observer的机制,实现所谓响应式的编程体验。 RxAndroid是RxJava在Android上的一个扩展;
也就是说,利用Obserable和Observer 我们可以很好的实现异步请求;
在android中、凡是与 UI相关的操作必须放到主线程。而我们往往会将耗时的操作、比如网络请求、放到子线程去处理,处理完后又要更新UI,这时候RxAndroid就派上了用场,具体的使用,这里就不说了,可以参考http://blog.csdn.net/chen_zhang_yu/article/details/52900725这个文档;
这三者、也可以说成是两者、一个是网络请求、一个是处理异步 更新UI;第一个OkHttp3可以单独使用、Retrofit2的使用建立在OkHttp3的基础上,RxJava也可以单独使用;
由于网络需求、以及异步更新、这三者可以结合在一起使用;但是这里要警记:任何第三库的出现,它是专门为解决某一个问题而产生的,也就是它并不完全的适用于任何场景,如果想要提高自己的应用的质量,还需思考清楚我们的应用需求,跟第三库的能力是否吻合,或者吻合成度有多高,这些都是需要考虑进去的,不要一味的因为其流行,就非要强制我们的应用中使用;
相关文章推荐
- Android Retrofit2+OkHttp3+RxJava 三联合
- Android 使用Retrofit2.0 + OKHttp 实现 HTTP协议请求
- Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
- Android中Retrofit+OkHttp进行HTTP网络编程的使用指南
- Android主流网络请求开源库的对比(Android-Async-Http、Volley、OkHttp、Retrofit)
- Android Retrofit 2.0 配置OkHttpClient
- android:安卓中5中网络请求库之Vellory OkHttp Retrofit
- android Retrofit+OkHttp使用自制的证书实现https安全传输
- Android网络请求三方库OkHttp,Retrofit的使用,及其注解使用的简介
- Android 框架学习之 第一天 okhttp & Retrofit
- 还不会使用OkHttp和Retrofit进行Android网络请求?看看这篇你就会了!
- android用okhttp和retrofit访问网络的时候有时候出现EOFException异常
- okhttp,retrofit,android-async-http,volley应该选择哪一个?
- Android Okhttp3+Retrofit2网络加载效率优化
- Okhttp, Retrofit, android-async-http, Volley用哪个好
- Android开发okhttp,retrofit,android-async-http,volley?
- 学会Retrofit+OkHttp+RxAndroid三剑客的使用,让自己紧跟Android潮流的步伐
- Retrofit 2.0,RxJava(Android), OkHttp3.3
- Android中okhttp3.4.1+retrofit2.1.0实现离线缓存
- Android主流网络请求开源库的对比(Android-Async-Http、Volley、OkHttp、Retrofit)