概述
在Android 中, 使用 rxandroid , rxandroid和rxJava的关系是,rxandroid包 依赖rxJava包,在其功能上增加了一些Android特有功能,项目中如果不需要指定rxJava包的版本,只需引入rxandroid包即可,如果需要更改 rxandroid包中默认的rxJava包版本 , 在项目中引入指定的rxJava包即可.
比如:
implementation 'io.reactivex.rxjava2:rxjava:2.2.21' //会替换 rxandroid:2.1.1包默认的rxjava为2.2.21版本
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
主要接口和对象
ObservableOnSubscribe<T>
Observable<T>
Observer<T>
生成 Observable 的流程
1: 指定 T
2: 实现接口ObservableOnSubscribe,或者使用匿名类
3: 调用Observable.create静态方法创建 可被订阅的[可观察] Observable
执行流程
1: 实现 ObservableOnSubscribe 接口 ,定义出 ObservableOnSubscribeImpl类
2: 实例化得 observableOnSubscribeImpl对象 ( 1-2 也可以直接使用匿名类得到)
3:使用 Observable.create静态方法 传入observableOnSubscribeImpl 创建出可被订阅的[可观察]对象 observable, 注意,这里是可被订阅的.
4: observable 对象添加 异步执行的信息
5: 实现 Observer接口 ,定义出 ObserverImpl类
6: 实例化得 observerImpl对象 ( 5-6 也可以直接使用匿名类得到)
5 调用 observable.subscribe 方法和observerImpl 对象关联,此方法内部会触发执行 observableOnSubscribeImpl.subscribe()方法 , 通常,subscribe是异步执行
6: observableOnSubscribeImpl.subscribe() 方法中通过调用 ObservableEmitter. onNext(T t) ,触发 observerImpl.onNext(T t) 在UI线程执行. onError 等方法同理