了解 RxJava 基础知识
Understanding RxJava basics
我刚刚开始使用 RxJava,利用这个 tutorial。我了解 Observable
和 Subscriber
是什么。但是我对 "connecting" 他们有疑问。我只是想过这样一个任务: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();
});
但是在ActivityA我必须订阅它。但是我没有参考 Activity B 中的 Observable。我考虑过在我的 Application
class 中静态创建 Observable 但我不知道 mDate
的值然而。我可以在不实现 "call()"-Method(调用 onNext()
和 onCompleted()
的地方)的情况下以某种方式创建某种类型的 Observable 吗?那么我已经有了一个可以在 Aativity.And 中订阅的 Observable 实例,然后我可以在 Activity B 中实现 "call()"-Method?或者还有其他 RxJava 功能可以用来实现我描述的目标吗?
你需要一个叫做 ReplaySubject
的东西。
在你的习惯中 MyApplication
class:
ReplaySubject<Date> dateSubject = ReplaySubject.create();
在activity B:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.onNext(mDate);
subject.onCompleted();
在activity答:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.subscribe(...);
我刚刚开始使用 RxJava,利用这个 tutorial。我了解 Observable
和 Subscriber
是什么。但是我对 "connecting" 他们有疑问。我只是想过这样一个任务: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();
});
但是在ActivityA我必须订阅它。但是我没有参考 Activity B 中的 Observable。我考虑过在我的 Application
class 中静态创建 Observable 但我不知道 mDate
的值然而。我可以在不实现 "call()"-Method(调用 onNext()
和 onCompleted()
的地方)的情况下以某种方式创建某种类型的 Observable 吗?那么我已经有了一个可以在 Aativity.And 中订阅的 Observable 实例,然后我可以在 Activity B 中实现 "call()"-Method?或者还有其他 RxJava 功能可以用来实现我描述的目标吗?
你需要一个叫做 ReplaySubject
的东西。
在你的习惯中 MyApplication
class:
ReplaySubject<Date> dateSubject = ReplaySubject.create();
在activity B:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.onNext(mDate);
subject.onCompleted();
在activity答:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.subscribe(...);