我使用 aPublishProcessor<?>
来服务多个观察者。有没有办法知道第一个观察者何时被订阅,最后一个观察者何时被处置?
问问题
358 次
1 回答
4
不是直接的,你需要捕获订阅者和取消者:
PublishProcessor<?> pp = ...
AtomicInteger counter = new AtomicInteger();
Action onFirst = ...
Action onLast = ...
Flowable<?> f = pp.doOnSubscribe(s -> {
if (counter.getAndIncrement() == 0) {
onFirst.run();
}
})
.doFinally(() -> {
if (counter.decrementAndGet() == 0) {
onLast.run();
}
})
// use f for subscribe() instead of pp
于 2016-12-07T17:37:45.820 回答