Android上的RxJava和随机偶发事件

时间:2013-10-09 08:33:02

标签: java android rx-java

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

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

就像我说的那样

Observable.from(x)

在我看来,我需要为每个事件做到这一点,但这会产生一个需要再次注册的新的可观察对象。当然我错过了什么。

2 个答案:

答案 0 :(得分: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中(反之亦然,具体取决于您的操作),您可以很好地分离关注点。

答案 1 :(得分:3)

对于此类用例,

The newly added refCount operator for ConnectableObservable being added in 0.14.3对您也很有用。

当多个观察者来来往往时,它支持自动连接/断开连接。