事实证明,subscribe() 方法提供所有三个参数是非常有用的,因此有一个简单的包装器保存所有三个回调是很有帮助的。这就是Observer<T> 的设计原因。Observer<T> 是一个包含所有三个回调的容器,它接收来自Observable<T>的所有可能的通知。下面是如何注册一个Observer<T> :
Observer<Tweet> observer = new Observer<Tweet>() {
@Override
public void onNext(Tweet tweet) {
System.out.println(tweet);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onCompleted() {
noMore();
}
};
//...
tweets.subscribe(observer);
事实上,Observer<T>是在RxJava中监听的核心抽象。然而,如果您想要更大的控制, Subscriber(Observer的抽象实现)就更强大了。