/ / RxJava2 Assunto sem dados - java, android, rx-java, rx-java2

RxJava2 Assunto sem dados - java, android, rx-java, rx-java2

Eu tenho que ouvir algum evento, o que pode acontecer em muitos lugares, como cliques de botão, textChanges, activityCallbacks etc.

Estou a usar Subject para acionar esse evento. Mas eu não quero enviar nenhum dado com este evento.

Eu só preciso notificar que algum evento aconteceu. Para isso existe um Subject sem tipo?

Agora eu estou criando um Subject do String

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

e estou provocando com alguma corda vazia

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

mas isso String valor não faz nenhum sentido. Eu só preciso acionar um evento sem nenhum dado, assim como Completable conclui sem nenhum valor de resultado.

Há alguma maneira de fazer isso?

Eu preciso de algo como mSubject.trigger()

Respostas:

0 para resposta № 1

Como Hans comentou, você poderia definir um enum que representa um valor ignorável:

enum ValueLessSignal {
IGNORE_ME;
}

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

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

subject.onNext(ValueLessSignal.IGNORE_ME);

Você pode escolher a nomenclatura do enum e sua instância única como achar melhor.