📜  RxJava-PublishSubject(1)

📅  最后修改于: 2023-12-03 15:19:53.664000             🧑  作者: Mango

RxJava-PublishSubject

PublishSubject 是 RxJava 中的一个特殊的 Subject,它无论何时都会把它接收到的所有事件发送给所有已订阅的观察者。

创建一个 PublishSubject
PublishSubject<String> subject = PublishSubject.create();
订阅
subject.subscribe(new Observer<String>() {
    @Override
    public void onNext(String s) {
        System.out.println("onNext: " + s);
    }

    @Override
    public void onError(Throwable e) {
        System.out.println("onError: " + e.getMessage());
    }

    @Override
    public void onComplete() {
        System.out.println("onComplete");
    }
});
发送事件
subject.onNext("Hello");
subject.onNext("World");
输出
onNext: Hello
onNext: World
应用场景

PublishSubject 可以用于多个观察者需要同时接收事件的场景,例如实现一个简单的事件总线。

总结

PublishSubject 是一个非常常用的 Subject,它可以让所有订阅了它的观察者都能同时接收到它发送的事件。应用场景广泛,可以用于事件总线、UI 线程和 IO 线程之间的通信以及其他多个观察者需要同时接收事件的场景。