RxJava学习笔记
// 示例
Observable
.create((Observable.OnSubscribe) subscriber -> { // 创建Observable对象,接收一个OnSubscribe对象
subscriber.onNext(num);
subscriber.onCompleted();
})
.subscribeOn(Schedulers.newThread())
.map(String::valueOf)
.subscribe(new Subscriber() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
System.out.println(s);
}
});
家族成员
类/对象
- Observable
- 简单理解
被观察者
- 深入理解
博主暂时停留在简单理解上…
- OnSubscribe
- 简单理解
观察者在通知订阅者时的行为
- 深入理解
有suscriber订阅后通过onSubscribe.call()执行,类似策略模式(在学习过策略模式后我会无脑地认为所有对行为类地封装都是策略模式…)
- Func1
- 简单理解
类似于Runnable类,里面只有一个方法,不过比Runnable多了方法参数、泛型和返回值
- 深入理解
去看Func和Aciton的源码, 看不出来别回来…(提示:看返回值,看泛型类型和call方法接收的参数数量)
- subscriber
- 简单理解
订阅者,继承Observer,内部封装了onStart()等特有方法,其他像onNext()、onComplete()等方法继承自Observer,这些方法用于在观察者(Observable)中回调
- 深入理解
博主暂时停留在简单理解上…
方法
- Observable.create(onSubscribe)
- 简单理解
等同于new Observable(onSubscribe),构造函数接收一个OnSubscribe对象
- 深入理解
Observable构造函数用protect保护起来,无法通过new创建,只有通过静态方法如create()获取对象,接收一个OnSubscribe对象,赋值给成员变量OnSubscribe onSubscribe持有,在订阅者订阅后通过onSubscribe.call()进行回调
- subscribeOn(Scheduler)
- 简单理解
设置此Observable的工作线程
- 深入理解
博主暂时停留在简单理解上…
- map(Func1)
- 简单理解:
这个方法的源码略复杂,但是逻辑非常简单。简单来说:Observable, Subscriber,因为泛型类型不同,他们没办法在一起,这时候map方法把T转换成R,高喊在一起在一起~~
- 深入理解:
调用map()的对象为Observable, map()接收一个Func1, 返回一个Observable以便处理Suberscriber
- suscribe()
- 简单理解:
动词,订阅,指subscriber开始订阅Observable,所有事件的源头。
- 深入理解
...