在RxJava中,我在Subscriber
订阅了一个Observable
对象。稍后(调用onComplete()
后的某个时间)我创建一个新的Observable
并使用之前使用的相同Subscriber
实例进行订阅。但是,这似乎不起作用。订户是否不可重复使用?
示例:
class Loader extends Subscriber<T> {
public void load(){
Observable.just("Foo").subscribe(this);
}
public void onComplete(){
// update UI
}
}
在我的代码中,我想实例化Loader
一次,并多次调用load()
,例如在用户点击刷新按钮后...
答案 0 :(得分:12)
您无法重复使用Subscriber
,因为它会实现Subscription
,其isUnsubscribed
字段一旦设置为true
,就永远不会再成为false
,因此Subscription
不可重复使用。
Observer
不包含有关订阅状态的任何信息,因此您可以重复使用它。每次订阅Observer
到Observable
时,RxJava实现都会将它包装在new Subscriber
内。
答案 1 :(得分:0)
使用Observable::concat
创建一个Observable,它按顺序从多个Observable中发出项目。订阅。