我使用PublishProcessor<?>
为多个观察者提供服务。有没有办法知道第一个观察者何时获得订阅并且最后一个观察者被处置?
答案 0 :(得分: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