RxJava 简介
RxJava 的核心概念是 Observables
和 Subscribers
。一个 Observable
发射物体,而一个 Subscriber
消耗它们。
可观察
Observable
是一个实现反应式设计模式的类。这些 Observables 提供了允许消费者订阅事件更改的方法。事件更改由 observable 触发。Observable
可以拥有的订户数量或者 Observable
可以发射的对象数量没有限制。
举个例子:
Observable<Integer> integerObservable = Observable.just(1, 2, 3); // Integer observable
Observable<String> stringObservable = Observable.just("Hello, ", "World", "!"); // String observable
这里,一个名为 integerObservable
和 stringObservable
的可观察对象是由 Rx 库提供的工厂方法 just
创建的。请注意,Observable
是通用的,因此可以发出任何对象。
订户
一个 Subscriber
是消费者。Subscriber
只能订阅一个 observable。Observable
称为 Subscriber
的 onNext()
,onCompleted()
和 onError()
方法。
Subscriber<Integer> mSubscriber = new Subscriber<Integer>() {
// NOTE THAT ALL THESE ARE CALLED BY THE OBSERVABLE
@Override
public void onCompleted() {
// called when all objects are emitted
System.out.println("onCompleted called!");
}
@Override
public void onError(Throwable throwable) {
// called when an error occurs during emitting objects
System.out.println("onError called!");
}
@Override
public void onNext(Integer integer) {
// called for each object that is emitted
System.out.println("onNext called with: " + integer);
}
};
请注意,Subscriber
也是通用的,可以支持任何对象。Subscriber
必须通过在 observable 上调用 subscribe
方法来订阅 observable。
integerObservable.subscribe(mSubscriber);
以上,运行时,将产生以下输出:
onNext called with: 1
onNext called with: 2
onNext called with: 3
onCompleted called!