unl*_*101 5 android observable rx-java
我只是在使用 RxJava 做我的第一步,利用本教程。我明白什么是一个Observable,什么是一个Subscriber。但是我在“连接”它们时遇到了问题。我刚刚想到了这样一个任务:一个活动 A 启动一个活动 B。活动 B 有一个按钮,你可以用它创建一个Date包含当前日期的按钮。另一个按钮发出它Date并完成活动 B。活动 A 订阅发出的Date-Observable 并显示当前日期。(我知道这通常是通过使用活动结果来完成的)。我有以下问题:
我可以Date通过此代码在活动 B 中创建一个-Observable(实例 mDate 是类型Date并在活动 B 中的其他位置创建):
Observable<Date> dateObservable =
Observable.create(sub -> {
sub.onNext(mDate);
sub.onCompleted();
});
Run Code Online (Sandbox Code Playgroud)
但是在 Activity AI 中必须订阅它。但是我没有提到活动 B 中的 Observable。我想在我的Application班级中静态创建 Observable,但我还不知道它的价值mDate。我可以以某种方式创建某种类型的 Observable 而不实现“call()”-Method(在哪里onNext()和onCompleted()被调用)?那么我已经有一个可以在我的 Aativity 中订阅的 Observable 实例。然后我可以在活动 B 中实现“call()”-Method?或者我可以使用其他 RxJava 特性来实现我描述的目标吗?
你需要一个叫做ReplaySubject.
在您的自定义MyApplication类中:
ReplaySubject<Date> dateSubject = ReplaySubject.create();
Run Code Online (Sandbox Code Playgroud)
在活动B中:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.onNext(mDate);
subject.onCompleted();
Run Code Online (Sandbox Code Playgroud)
在活动A中:
ReplaySubject<Date> subject = ((MyApplication)getApplication()).getSubject();
subject.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
756 次 |
| 最近记录: |