在RxJava中,要将多个观察者订阅到同一个Observable,你需要创建一个Observable实例,然后使用subscribe()
方法让多个观察者订阅它
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class MultipleObserversExample {
public static void main(String[] args) {
// 创建一个 Observable
Observable<String> observable = Observable.just("Hello RxJava");
// 创建两个观察者
Observer<String> observer1 = getObserver("Observer 1");
Observer<String> observer2 = getObserver("Observer 2");
// 订阅多个观察者
Disposable disposable1 = observable.subscribe(observer1);
Disposable disposable2 = observable.subscribe(observer2);
// 如果不再需要订阅,可以取消订阅
// disposable1.dispose();
// disposable2.dispose();
}
private static Observer<String> getObserver(String name) {
return new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println(name + " subscribed");
}
@Override
public void onNext(String s) {
System.out.println(name + " received: " + s);
}
@Override
public void onError(Throwable e) {
System.out.println(name + " error: " + e.getMessage());
}
@Override
public void onComplete() {
System.out.println(name + " completed");
}
};
}
}
在这个示例中,我们创建了一个Observable
实例,它发出一个字符串"Hello RxJava"。然后我们创建了两个观察者并使用subscribe()
方法订阅了这个Observable
。每个观察者都有一个名字,这样我们就可以在接收到事件时区分它们。
领取专属 10元无门槛券
手把手带您无忧上云