RxJava 1.x 简单、粗暴的划分,可以分为两类:
-可观察类数据 Observable (也就是被观察的数据)
-非可观察数据
为什么这么分呢?
首先、Observable 是业务逻辑启动的入口。
其次、在整个RxJava 1.x中,Observable 相关类数量很少,功能比较集中。
这篇文章主要介绍 :可观察类数据 Observable !
可观察类数据 Observable 对应一个同名的 Observable 类。
下图是 Observable家族的全部成员。除了Subject这个类的子类,没有列出,因为Subject这个类比较特殊。
1、类属性
Observable只包含了一个final OnSubscribe类型的属性。
final OnSubscribe<T> onSubscribe;
这个属性只能在Observable的唯一构造方法中赋值。
protected Observable(OnSubscribe<T> f) {
this.onSubscribe = f;
}
Observable没有提供任何外部访问这个属性的方法,这意味着,Observable中的数据是不可改变的(immutable)。
这个数据不可改变性为提高多线程和并行运算的数据安全和无状态管理提供了基础和可能。
2、静态方法
Observable 提供了 130个静态方法;
所有静态方法返回的类型都是 Observable
3、非静态方法
Observable提供了275个非静态方法;
其中 272个是 final 类型的方法,只有3个不是final类型的。
除了6个 subscribe()方法返回的是Subscription类型,
3个forEach()方法返回的是 void,
其他方法返回的都是 Observable类型。
subscribe()
subscribe(Action1<? super T>)
subscribe(Action1<? super T>, Action1<Throwable>)
subscribe(Action1<? super T>, Action1<Throwable>, Action0)
subscribe(Observer<? super T>)
subscribe(Subscriber<? super T>)
forEach(Action1<? super T>)
forEach(Action1<? super T>, Action1<Throwable>)
forEach(Action1<? super T>, Action1<Throwable>, Action0)
Observable类在 RxJava1.3.0中包括全部注释在内,代码行数为 12817行。