我正在尝试创建Observable
具有以下特征的:
BehaviorSubject
带有doOnSubscribe
/的AdoOnDispose
满足#1和#2,但为每个订户(而不是第一个和最后一个)运行订阅/处置。添加share
满足#1和#3,但仅将最后发出的项目发射给第一个并发订户。
我想出了一个似乎可行的解决方案,但感觉就像一个丑陋的hack:
AtomicInteger subs = new AtomicInteger();
Observable<String> test = BehaviorSubject.createDefault("foo")
.doOnSubscribe(x -> {
if(subs.getAndIncrement() == 0) {
// do something
}
})
.doOnDispose(() -> {
if(subs.decrementAndGet() == 0) {
// do something
}
});
是否存在可以达到相同效果的现有运营商或运营商组合?
对replay
参数1使用运算符,即
yourObservable.replay(1)
编辑:您是对的,重播将返回一个connectedObservable,并且refcount
运算符将使其像在Observable上那样运行,即
yourObservable.replay(1).refcount()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句