Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用RX Java正确处理EventBus上的onError_Java_Android_Rx Java_Rx Android - Fatal编程技术网

如何使用RX Java正确处理EventBus上的onError

如何使用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

我在android上使用RXJava,我的事件总线类如下

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)
重载)