您的位置:首页 > 理论基础 > 计算机网络

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

简单使用方式:
这是我们从网络请求到数据 、在放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