walfud 彻底搞懂 RxJava 系列:
彻底搞懂 RxJava — 初级篇
彻底搞懂 RxJava — 中级篇
彻底搞懂 RxJava — 高级篇
初级篇:
Observable
.create(new Observable.OnSubscribe<String>() {//下面理解的第1步
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("hello");
}
})
.subscribe(new Subscriber<String>() {//下面理解的第2步
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
textView.setText(s);
}
});
主要是Observable调用create以及构造完成后调用subscribe方法两步的分析:
- Observable.create实际上创建了一个Observable对象和一个OnSubscribe对象,OnSubscribe可以理解成事件流。
- create后调用的subscribe实际上是调用第一步的创建的OnSubscribe的call方法,可以理解成将该Observable的事件流指向我们new出的Subscriber
中级篇:
主要以map操作符为例,讲解了‘变换’操作:
- 第一步同样是create函数,与初级篇相同,创建了Observable和OnSubscribe两个对象
- 调用map函数,也就是调用lift,主要的变换操作就是lift函数中完成的:
①创建了一个OperatorMap,并将map中的处理过程也就是new的Fun1这个接口赋给了OperatorMap中的transformer对象。
②创建了第二个Observable和一个Subscriber。
③将第一个Observable(也就是我们调用Observable.create所创建的)的OnSubscribe指向上一步的Subscriber,也就是说将我们代码所产生的事件首先传递给了lift函数中创建的Subscriber处理。
④ 弟③步中lift函数创建的Subscriber的处理过程是
o.onNext(transformer.call(t)); 这个o便是我们需要自己创建的Subscriber - 最后我们调用subscribe函数并传入我们自己创建的Subscriber即可
高级篇:
还没仔细看,主要是关于线程的问题,貌似也是通过创建新的Observable和Subscriber作为代理进行线程间的切换