Tag: event bus

GWT:如何在两个模块之间共享java对象(即:EventBus)

我正在构建一个大型应用程序,我想将它拆分为几个模块,如核心模块,用于初始化,用户管理等…,客户模块,生产模块等… 我想将它拆分为多个GWT模块(不使用GWT拆分技术)并共享一个EventBus,用于广播一些事件,如LoginEvent,LogoutEvent。 我不想使用代码分割技术,因为我想减少编译时间并仅重新编译我修改的模块。 这也允许通过在HTML主页中注释脚本标记来启用或禁用模块。 我使用JSNI编写了以下代码: CoreModule’s EntryPoint: private static SimpleEventBus eventBus = null; public void onModuleLoad() { export(); getEventBus().addHandler(MyEvent.TYPE, new MyEventHandler() { @Override public void onEvent(MyEvent myEvent) { Window.alert(myEvent.getMessage()); } }); } public static SimpleEventBus getEventBus() { if (eventBus == null) eventBus = new SimpleEventBus(); return eventBus; } public static native void export() /*-{ $wnd.getEventBus […]

GWT – MVP事件总线。 多个处理程序被创建

我正在使用我inheritance的大型应用程序,并遇到了一些最佳实践问题。 每次用户导航到“我们的客户编辑”页面时,都会创建一个新的演示者,并设置一个视图。 有一个主要的客户编辑演示者和一个主视图。 主视图中还有子视图,主演示者的子演示者使用它们。 在子演示者中,我在事件总线上注册事件处理程序。 我遇到的问题是,当第二次导航到联系人编辑器时,会再次创建演示者,并再次注册这些事件。 现在,当一个事件发生时,它会被处理两次,每个presenter实例一次。 演示者不会被变量保留,但子视图由主视图引用。 可能是视图中的此引用是否阻止事件处理程序被删除? 我的印象是,如果该对象被垃圾收集,将删除事件处理程序。 如果不是这种情况,我应该从事件总线取消注册这些事件处理程序吗? 更新:演示者没有被垃圾收集。 如果我可以修改代码以在不再需要这些演示者时删除对这些演示者的所有引用,那么它们是否会被收集,因此将删除事件处理程序?

活动巴士审查

我现在开始使用GWT并学习事件总线概念。 我觉得这个解决方案非常复杂。 因此,我试图通过自己编写原型来简化它,以查看所有问题。 首先,我将介绍我对事件总线的理解(可能完全错误)。 我们有这样的活动 public class FooEvent extends GwtEvent { public static Type TYPE = new Type(); //as event type integer ID //for.. hm.. probably some inner use in Event Bus @Override public Type getAssociatedType() { return TYPE; } //for handling @Override protected void dispatch(FooHandler handler) { handler.someMethod(this); } } 处理程序界面 public interface FooHandler […]