0

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

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

哦,我想我们实际上不能使用任何 MBeans 类。不是黑莓 Java 版本的一部分。

谢谢!

4

1 回答 1

1

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

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

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

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

于 2011-05-18T20:45:29.127 回答