7

我想像使用 Guava 的EventBus或 Otto 一样使用 RxJava,但我不知道如何让它以这种方式运行。

这是场景:假设我想在我的 Android 应用程序中有一个按钮,每次按下按钮时,我都希望 RxJava 通过我的 Observable 发出一个事件。在我看来,我必须reregister在它收到一个事件后拥有该服务,并且该活动也需要创建一个新的 observable。

就像我说

Observable.from(x)

在我看来,对于每个事件,我都需要这样做,但这会创建一个新的 observable,需要再次注册。当然,我错过了一些东西。

4

2 回答 2

6

您可能想做这样的事情(来自 rx.subjects.PublishSubject):

PublishSubject<Object> subject = PublishSubject.create();
// observer1 will receive all onNext and onCompleted events
subject.subscribe(observer1);
subject.onNext("one");
subject.onNext("two");
// observer2 will only receive "three" and onCompleted
subject.subscribe(observer2);
subject.onNext("three");
subject.onCompleted();

如果您可以将 Subject 接口注入到 Service 中,并将 PublishSubject 注入到 Activity 中(反之亦然,具体取决于您的操作),您可以很好地分离关注点。

于 2013-10-09T13:58:37.983 回答
3

在 0.14.3 中添加的 ConnectableObservable 新添加的 refCount 运算符对于此类用例也将很有用。

它支持在多个观察者来来去去时自动连接/断开连接。

于 2013-10-09T19:15:56.360 回答