例如,按照我的简短评论:
public class API implements OnSubscribe<Event> {
private List<Subscriber<Event>> subscribers = new ArrayList<>();
public void sendEvent(Event event) {
// Do whatever you need with the event
for (Subscriber<Event> sub : subscribers) {
sub.onNext(event);
}
}
public void call(Subscriber<Event> sub) {
subscribers.add(sub);
}
}
那么你可能在某处有一个实例:API api = ...
你的 Observable 是这样获得的:Observable.create(api);
然后你可以用 Observable 做任何正常的事情。
未订阅的 s 的过滤Subscriber
留给读者作为练习。
编辑
更多研究表明这PublishSubject
应该会有所帮助:
public class API {
private PublishSubject<Event> subject = PublishSubject.create();
public void sendEvent(Event event) {
// Do whatever you need with the event
// Then publish it
subject.onNext(event);
}
public Observable<Event> getObservable() {
return subject.asObservable();
}
}
这样,你就可以订阅这个 Observable,并且每次发送一个事件到API
,它都会发布给所有的订阅者。
像这样使用:
API api = ...;
api.getObservable().subscribe(event -> doStuffWithEvent(event));
api.getObservable().subscribe(event -> doOtherStuffWithEvent(event));