我刚刚开始使用 RxJava,利用这个 tutorial .我了解什么是 Observable
以及什么是 Subscriber
。但是我在“连接”它们时遇到了问题。我刚刚想到了这样一个任务:Activity A 启动 Activity B。Activity B 有一个按钮,您可以使用该按钮创建一个包含当前日期的 Date
。另一个按钮发出此 Date
并完成 Activity B。Activity A 订阅发出的 Date
-Observable 并显示当前日期。 (我知道这通常是通过使用 Activity 结果来完成的)。我有以下问题:
我可以通过这段代码在 Activity B 中创建一个 Date
-Observable(实例 mDate 的类型为 Date
并在 Activity B 的其他地方创建):
Observable<Date> dateObservable =
Observable.create(sub -> {
sub.onNext(mDate);
sub.onCompleted();
});
但在 Activity A 中我必须订阅它。但是我没有引用 Activity B 中的 Observable。我考虑过在我的 Application
类中静态创建 Observable,但我还不知道 mDate
的值。我能否在不实现“call()”方法(调用 onNext()
和 onCompleted()
)的情况下以某种方式创建某种类型的 Observable?那么我已经有了一个可以在我的 Aativity 中订阅的 Observable 实例。然后我可以在 Activity B 中实现“call()”方法?或者还有其他 RxJava 功能可以用来实现我描述的目标吗?
最佳答案
你需要一个叫做 ReplaySubject
的东西。
在您的自定义 MyApplication
类中:
ReplaySubject<Date> dateSubject = ReplaySubject.create();
在 Activity B 中:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.onNext(mDate);
subject.onCompleted();
在 Activity A 中:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.subscribe(...);
关于android - 了解 RxJava 基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36569797/