OKHttp
一个网络请求框架,使用了工厂原型模式构造,可以通过拦截器修改请求头、参数等。
Retrofit是什么
官网介绍是A type-safe HTTP client for Android and Java,是一个 RESTful 的 HTTP 网络请求框架的封装,但网络请求不是Retrofit来完成的,它只是封装了请求参数、Header、Url、返回结果处理等信息,而请求是由OkHttp3来完成的。
从动态代理开始 builder的时候
Retrofit使用动态代理,其实是为了开发者在写代码时方便调用
适配转换Call对象,因为retrofit自己也有一套自己的,要和OKHttp转换
通过CallAdapterFactory来转换为接口要的call对象
实现原理——函数解析、网络请求和数据转换
查考:https://www.jianshu.com/p/f57b7cdb1c99
RxJava和RxAndroid
RXJava是实现同步和异步的操作的,关键是异步,简单的两个方法就能实现。
过去一般用AsynchTask 或handler很麻烦,代码不清晰,可读性差。所以就有了RXJava
通过签约观察者实现观察的功能,有两种方法
suscribe 和 observe()
他们差不多的,只是subscribe对observe做了扩展,内部添加了onStart()方法,可以做些准备工作,如view初始化,还有unSubscrite()用于取消的,他在防止内漏是很有用的哦
RXJava的强大作用在于她的操作符:
create : 最基本的Observable注册一个观察者
just: 一句话就可发送值给观察者,不用和create那样麻烦要new一个接口对象。
from: 对一组对象进行观察,如一个list
flatMap: 把一个observable输出作为输入,作为新的observable进行再次监听;典型的list<object> -> object
filter: 顾名思义,过滤条件,不符合的不监听,一般结合flatMap
take(num)限定个数的,结合flatMap
doOnNext() 如许输出前做些额外操作,如保存
还有subscribeOn()/observeOn 用于切换线程的
subscribe是被观察者的线程如后台Scheduler.io()
observe是观察者线程如AndroidScheduler.MainThread()
他们是差不多的,RxAndroid只是在Android的基础上对RXJava做了一些封装,如Observabl持有Context对象时防止内存泄露。
是通过一个Subscription对象去实现的,在执行签约方法时,返回一个subscription,然后在destroy方法内进行解约。
网友评论