了解RxJava基础知识

时间:2016-04-12 09:55:39

标签: android rx-java observable

我正在使用RxJava完成我的第一步,使用这个tutorial。我理解ObservableSubscriber是什么。但我有“连接”他们的问题。我只想到了这样一个任务:活动A启动活动B.活动B有一个按钮,您可以使用该按钮创建包含当前日期的Date。另一个按钮发出此Date并完成活动B.活动A订阅发出的Date - Observable并显示当前日期。 (我知道这通常是通过使用Activity结果完成的)。我有以下问题:

我可以通过此代码在活动B中创建Date - Observable(实例mDate的类型为Date,并在活动B中的其他位置创建):

Observable<Date> dateObservable =
            Observable.create(sub -> {
        sub.onNext(mDate);
        sub.onCompleted();
    });

但在活动A中,我必须订阅它。但是我没有参考活动B中的Observable。我考虑过在我的Application课程中静态创建Observable,但我还不知道mDate的价值。我可以以某种方式创建一个特定类型的Observable而不实现“call()” - 方法(调用onNext()onCompleted())?那么我就已经有了一个可以在我的Aativity中订阅的Observable实例。然后我可以实现“call()” - Activity B中的方法?是否有其他RxJava功能可用于实现我描述的目标?

1 个答案:

答案 0 :(得分:1)

你需要一个名为ReplaySubject的东西。

在您的自定义MyApplication课程中:

ReplaySubject<Date> dateSubject = ReplaySubject.create();

在活动B中:

ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.onNext(mDate);
subject.onCompleted();

在活动A:

ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.subscribe(...);