我正在使用RxJava完成我的第一步,使用这个tutorial。我理解Observable
和Subscriber
是什么。但我有“连接”他们的问题。我只想到了这样一个任务:活动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功能可用于实现我描述的目标?
答案 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(...);