android - 在 javaRx 2.0 中创建事件总线
问题描述
如标题所示,我正在尝试创建事件总线以在片段之间共享多个事件。我正在使用 JavaRx 2 和 Dagger 2 进行注入。这就是我想要实现的目标: 非常有趣的实现
这就是我的事件总线的样子:
@MainScope
public class EventBus {
@Inject
public EventBus(){
}
private PublishSubject<Object> busSubject = PublishSubject.create();
public <T> Observable<T> register (Class<T> eventClass){
return busSubject
.filter(event -> event.getClass().equals(eventClass))
.map(obj -> (T) obj);
}
public PublishSubject<Object> getBusSubject() {
return busSubject;
}
public void post(Object event){
busSubject.onNext(event);
}
}
然后在 mainPresenter 我发布这样的简单类:
eventBus.post(id);
在我注入相同事件总线实例的片段之一中,我订阅了事件:
Observer<IdEvent> observer = eventBus.register(IdEvent.class).observeOn(schedulersFacade.io()).subscribeOn(schedulersFacade.ui()).subscribeWith(new Observer<IdEvent>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println( );
}
@Override
public void onNext(IdEvent idEvent) {
id = idEvent.getParsedId();
}
@Override
public void onError(Throwable e) {
System.out.println( );
}
@Override
public void onComplete() {
System.out.println( );
}
});
在调试时,我看到 post 方法被称为 onSubscribe 观察者方法。问题是永远不会调用 onNext 方法。我是 JavaRx 的新手,我无法解决我的问题,所以我将不胜感激任何建议。
解决方案
推荐阅读
- oracle - 无法将此 SQL 查询转换为 PL/SQL
- javascript - 如何在 React Native 中使用带有可滚动屏幕的 React Native swiper
- javascript - 在绑定方法中获取类的 this 上下文,同时保留绑定 this
- typescript - TypeScript 命名空间要停止使用?
- python-3.x - 为每个元素生成具有唯一范围的 numpy 矩阵
- sql-server - 将今天的日期附加到 sp_spaceUsed 的结果中
- python-3.x - 如何在不同的分辨率下使用经过训练的深度学习模型?
- azure - o365 报告 API 无法获取报告
- javascript - JSX 元素的 HOC - 使用包装元素渲染 jsx
- c# - 使用 c# 中的 Word Interop 以 100% 保真度将文档内容(包括格式和页面格式)复制到另一个