没有数据的 RxJava2 主题

RxJava2 Subject with no data

我必须监听一些事件,这可能发生在很多地方,比如按钮点击、textChanges、activityCallbacks 等

我正在使用 Subject 来触发此事件。但我不想通过此事件发送任何数据。

我只需要通知发生了一些事件。为此,是否有 Subject 没有类型?

现在我正在创建一个 Subject of String

     Subject<String> mSubject = PublishSubject.create();

我用一些空字符串触发它

  button.setOnClickListener(v -> {
                    mSubject.onNext("");
                });                  

但是 String 值没有任何意义。我只需要在没有任何数据的情况下触发一个事件,就像 Completable 在没有任何结果值的情况下完成。

有什么办法吗?

我需要像 mSubject.trigger()

这样的东西

正如 Hans 评论的那样,您可以定义一个代表可忽略值的枚举:

enum ValueLessSignal {
    IGNORE_ME;
}

PublishSubject<ValueLessSignal> subject = PublishSubject.create();

subject.subscribe(ignore -> { System.out.println("Something happened"); })

subject.onNext(ValueLessSignal.IGNORE_ME);

您可以根据需要选择枚举及其单个实例的命名。