重用订阅者
Reuse subscriber
在 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()
,例如在用户单击刷新按钮后...
使用 Observable::concat
创建一个 Observable,它按顺序从多个 Observable 中发出项目。订阅那个。
您不能重复使用 Subscriber
,因为它实现了 Subscription
,它有一个 isUnsubscribed
字段,一旦设置为 true
,就永远不会变成 false
,所以 Subscription
不可重复使用。
另一方面,Observer
不包含有关订阅状态的任何信息,因此您可以重复使用它。每次你订阅一个 Observer
到一个 Observable
时,RxJava 实现都会为你将它包装在一个 new Subscriber
中。
在 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()
,例如在用户单击刷新按钮后...
使用 Observable::concat
创建一个 Observable,它按顺序从多个 Observable 中发出项目。订阅那个。
您不能重复使用 Subscriber
,因为它实现了 Subscription
,它有一个 isUnsubscribed
字段,一旦设置为 true
,就永远不会变成 false
,所以 Subscription
不可重复使用。
Observer
不包含有关订阅状态的任何信息,因此您可以重复使用它。每次你订阅一个 Observer
到一个 Observable
时,RxJava 实现都会为你将它包装在一个 new Subscriber
中。