如何使用RX Java正确处理EventBus上的onError
我在android上使用RXJava,我的事件总线类如下如何使用RX Java正确处理EventBus上的onError,java,android,rx-java,rx-android,Java,Android,Rx Java,Rx Android,我在android上使用RXJava,我的事件总线类如下 public class EventBus { private final Subject<Event, Event> subject = new SerializedSubject<>(PublishSubject.<Event>create()); private Observable<Map<Type, Event>> stickyObservable; public E
public class EventBus {
private final Subject<Event, Event> subject = new SerializedSubject<>(PublishSubject.<Event>create());
private Observable<Map<Type, Event>> stickyObservable;
public EventBus() {
createStickyObservable();
}
private void createStickyObservable() {
final List<Observable<Event>> observables = new ArrayList<>();
final Observable<Map<Type, Event>> so = subject
.filter(event -> event.sticky)
.groupBy(event -> event.type)
.switchMap(groupedObservable -> {
BehaviorSubject<Event> bs = BehaviorSubject.create();
groupedObservable.subscribe(bs);
observables.add(bs);
return Observable.combineLatest(observables, args -> {
Map<Type, Event> map = new HashMap<>();
for (Object arg : args) {
Event event = (Event) arg;
map.put(event.type, event);
}
return map;
});
});
final BehaviorSubject<Map<Type, Event>> bs = BehaviorSubject.create();
so.subscribe(bs);
stickyObservable = bs;
}
public Observable<Event> filter(final String pathExpression) {
final Pattern pattern = Pattern.compile(pathExpression);
return subject.filter(event -> {
if (event.path == null) {
return pathExpression == null;
}
return pattern.matcher(event.path).matches();
});
}
public Observable<Map<Type, Event>> getStickyObservable() {
return stickyObservable;
}
public void event(Event event) {
subject.onNext(event);
}
公共类事件总线{
private final Subject=new SerializedSubject(PublishSubject.create());
私人可观察粘性可观察;
公共活动巴士(){
createStickyObservable();
}
私有void createStickyObservable(){
最终可观测列表=新ArrayList();
最终可观测so=主体
.filter(事件->事件.sticky)
.groupBy(事件->事件类型)
.switchMap(组可观察->{
BehaviorSubject bs=BehaviorSubject.create();
groupedObservable.subscribe(bs);
可观测值。添加(bs);
返回可观察的。组合相关测试(可观察的,参数->{
Map Map=newhashmap();
用于(对象arg:args){
事件=(事件)参数;
map.put(event.type,event);
}
返回图;
});
});
final BehaviorSubject bs=BehaviorSubject.create();
so.认购(bs);
粘性可观察=bs;
}
公共可观察筛选器(最终字符串路径表达式){
最终模式=Pattern.compile(pathExpression);
返回主题过滤器(事件->{
if(event.path==null){
返回路径表达式==null;
}
返回pattern.matcher(event.path.matches();
});
}
公共可观测getStickyObservable(){
返回粘性可观测;
}
公共无效事件(事件){
主题.onNext(事件);
}
}
我收到了很多关于rx.exceptions.OnErrorNotImplementedException的错误日志:
我怎样才能解决这个问题?当您订阅
getStickyObservable()
时,请向我建议一些解决此问题的方法(不要仅使用.subscribe(action)
重载)