android - rx.Subscriber 实体退订后不能重用?
问题描述
我有这样的构造(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);
解决方案
1.xSubscriber
是有状态的,一旦你取消订阅它,它将立即取消订阅任何未来的使用。您必须创建一个新实例或使用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);
推荐阅读
- python - Python,无法导入烧瓶-restplus
- visual-studio - 插入制表符而不是空格
- c# - C# 序列化 JSON 对象无法映射到 POST 的目标字段
- sql - 如何在没有重复数据的情况下对两个具有连接的表求和?
- c# - 这个 C# 字典初始化如何正确?
- angular - Cordova & Ionic 4 未找到“FBSDKCoreKit/FBSDKCoreKit.h”文件
- flutter - setState() 在 statefulWidget 类中无法识别
- javascript - 什么会导出 JavaScript/Node.JS 文件?
- javascript - 计算其他时间空间之间的时间更新
- javascript - 返回传递相同部分的确切部分字符串,全部小写