如何使用RX Java在EventBus上正确处理onError
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用RX Java在EventBus上正确处理onError,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1536字,纯文字阅读大概需要3分钟。
内容图文
![如何使用RX Java在EventBus上正确处理onError](/upload/InfoBanner/zyjiaocheng/663/015d9ad9fdda4a6ab7b19655ead6d49f.jpg)
我在Android上使用rx java,我的事件总线类如下
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);
}
}
我收到很多带有rx.exceptions.OnErrorNotImplementedException的错误日志:
我怎样才能解决这个问题 ?请建议我一些解决这个问题的方法
解决方法:
订阅getStickyObservable()时,需要实现onError方法(例如,不要仅使用.subscribe(action)重载).
内容总结
以上是互联网集市为您收集整理的如何使用RX Java在EventBus上正确处理onError全部内容,希望文章能够帮你解决如何使用RX Java在EventBus上正确处理onError所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。