【问题标题】:Java Event Handling Help (Notifications vs EventObjects)Java 事件处理帮助(通知与事件对象)
【发布时间】:2011-05-18 19:39:38
【问题描述】:

我正在构建一个 Android 应用程序和一个 Blackberry 应用程序(相同的应用程序不同的平台)。我正在构建一个抽象类来处理事件。例如,我触摸 Android 上的“保存”按钮,它会发布一个通知/事件。抽象类接收该事件。我按下黑莓上的“保存”按钮,它做同样的事情。

完成此任务的最佳方法是什么?我查看了 EventObject,以及 MBean 及其通知类,但它们看起来过于复杂。在objective-c中,我只需在objective-c通知中心注册一个通知类实例,然后在触发通知的类中,在触发时我们按照“postNotification”的方式做一些事情。 Java中有什么那么容易的吗?我还需要发送带有这些通知的对象。

哦,我想我们实际上不能使用任何 MBean 类。不属于 Blackberry Java 版本。

谢谢!

【问题讨论】:

    标签: java android blackberry event-handling mbeans


    【解决方案1】:

    对于 BlackBerry,如果您计划从 UI 元素(ButtonField、ListField 等)生成这些事件,它们都带有 Field.setChangeListener(FieldChangeListener),因此您只需为其附加一个侦听器。如果您希望它能够响应 IO 或处理之类的事情,您可以使用 Event 和 EventListener 类来完成此操作。就我个人而言,我认为它们比我需要的简单通知要多一点,所以我通常会制作自己的简单界面。

    假设您有一个扩展 Thread 的类,该类连接到 Web 服务以下载列出州及其首都的 XML 文件。并对其进行处理。您可以使用抽象方法 public void addEventHandler(EventHandler)protected void notifyHandlers(Object obj) 创建一个接口 EventGenerator。在这里面你有一个向量,它存储你的notifyHandlers() 可以循环并发送一个调用到handler.handleEvent(Object) 的事件处理程序。处理完数据后,将其包装在一个 Oject(可能是 Hashtable 或自定义 States bean)中,我们将其称为 states,并在内部调用 notifyHandlers(states)。现在,当您遍历每个 EventHandler 时,您调用 handler.handleEvent(states)。您可以考虑在每次调用周围放置一个 try/catch,这样一个 EventHandler 就不会阻止所有调用。

    所以到 EventHandlers 上。这是另一个具有抽象方法public void handleEvent(Object obj) 的接口。假设您有一个屏幕,在检索到 states 后,它将在列表中显示它们。此屏幕将实现 EventHandler,然后使用 generator.addEventHandler(this) 向 EventGenerator 注册自身。每当处理完成时,都会调用此方法,您可以对返回的 Object 做任何您想做的事情。

    您可以实现的附加功能是将public void handleEvent(Object obj) 更改为public boolean handleEvent(Object obj),并且与BB 中的导航方法类似,如果事件已处理,则返回true,并且不应尝试处理它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 2012-12-19
      相关资源
      最近更新 更多