Retrofit2 + Rxjava2
2019-04-29 本文已影响0人
杨华_6f65
Retrofit2
· 大概原理
通过java接口以及注解来描述网络请求,并用动态代理的方式,在调用接口方法前后(before/after)注入自己的方法,before通过接口方法和注解生成网络请求的request,after通过client调用相应的网络框架(默认okhttp)去发起网络请求,并将返回的response通过converterFactorty转换成相应的数据model,最后通过calladapter转换成其他数据方式(如rxjava Observable)
· 动态代理
代理对象拦截真实对象的方法调用,在真实对象调用前/后实现自己的逻辑调用
见Retrofit.create()方法
动态代理
优势
Java动态代理的优势是实现无侵入式的代码扩展,也就是方法的增强;让你可以在不用修改源码的情况下,增强一些方法;在方法的前后你可以做你任何想做的事情(甚至不去执行这个方法就可以)。
动态代理是设计模式中的代理模式:
定义:为其它对象提供一种代理以控制对这个对象的访问控制;在某些情况下,客户不想或者不能直接引用另一个对象,这时候代理对象可以在客户端和目标对象之间起到中介的作用。
在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的。
参考 :https://www.cnblogs.com/gonjan-blog/p/6685611.html
Rxjava2
优点
- 链式调用,代码调用流程异常清晰 ,代码简洁。
- RxJava和EventBus一样也是基于观察者模式,但是使用的场景确实异步数据流的处理
- RxJava更加强大,利用操作符它可以对发出的消息进行一系列的变换
- 最方便的是线程切换