我有这样的构造(RxJava 1.3.x):
view().filter(view -> view != null).subscribe(subscriber);
这也是view()的定义。它会主动发出View
个实体。
public Observable<View> view() {
return views;
}
问题:为什么rx.Subscriber
onNext(并进一步传递给订阅)的简单实现有效(也就是说,正在调用onNext),但是这个无效:
subscriber.unsubscribe();
view().filter(view -> view != null).subscribe(subscriber);
答案 0 :(得分:2)
1.x Subscriber
是有状态的,一旦取消订阅,它将立即取消订阅。您必须创建一个新实例或使用rx.Observer
接口的实例。
// as fields for example
Subscription subscripion;
Observer<View> observer = new Observer<View>() {
@Override public void onNext(View t) { }
@Override public void onError(Throwable t) { }
@Override public void onCompleted() { }
});
// ...
if (subscription != null) subscription.unsubscribe();
subscription = view().filter(view -> view != null).subscribe(observer);