我必须听一些事件,这可能发生在许多地方,如按钮点击,textChanges,activityCallbacks等。
我使用Subject
来触发此事件。但是我不想发送这个事件的任何数据。
我只需要通知某些事件已经发生。那就是Subject
没有Type?
现在我正在创建Subject
String
Subject<String> mSubject = PublishSubject.create();
并使用一些空字符串
触发它 button.setOnClickListener(v -> {
mSubject.onNext("");
});
但String
值没有任何意义。我只需要触发没有任何数据的事件,就像Completable
完成时没有任何结果值。
有没有办法做到这一点?
我需要像mSubject.trigger()
答案 0 :(得分:2)
正如汉斯评论的那样,你可以定义一个表示可忽略值的枚举:
enum ValueLessSignal {
IGNORE_ME;
}
PublishSubject<ValueLessSignal> subject = PublishSubject.create();
subject.subscribe(ignore -> { System.out.println("Something happened"); })
subject.onNext(ValueLessSignal.IGNORE_ME);
您可以根据需要选择枚举及其单个实例的命名。