android - 了解 RxJava 基础知识

标签 android rx-java observable

我刚刚开始使用 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/

相关文章:

Android:使用 Retrofit 轮询服务器

javascript - 如果选中此复选框,则对其邻居执行此操作

angular - RXJS如何延迟每个可观察的(http请求)并合并所有请求输出

java - RxJava : how to code something like doOnEmpty?

android - mkdirs() 在写入外部权限时返回 false

php - $_SERVER ['HTTP_REFERER' ] 在移动网络应用程序中的等效功能是什么

android - RxJava - 如何在取消订阅 observable 后继续后台任务

rx-java - RxJava 搜索列表中的项目

java - Color.parseColor 抛出错误并且应用程序崩溃

android - HandlerThread 我应该覆盖 run() 吗?