Android Retrofit2+OkHttp3+RxJava 三联合

来源:互联网 发布:疯狂的美工好不好 编辑:程序博客网 时间:2024/05/18 22:13

最近项目里要用到网络 框架,这个3组合最近比较火,我也拿来试试水;得出以下几点个人看法;
像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也可以单独使用;

由于网络需求、以及异步更新、这三者可以结合在一起使用;但是这里要警记:任何第三库的出现,它是专门为解决某一个问题而产生的,也就是它并不完全的适用于任何场景,如果想要提高自己的应用的质量,还需思考清楚我们的应用需求,跟第三库的能力是否吻合,或者吻合成度有多高,这些都是需要考虑进去的,不要一味的因为其流行,就非要强制我们的应用中使用;

0 0