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

做到这一点的最佳方法是什么?我看过EventObject以及MBean及其通知类,但它们看起来过于复杂。在Objective-C中,我只是向Objective-C通知中心注册了一个用于通知的类实例,然后在触发Notif的类中,在触发时,我们按照“ postNotification”的方式进行操作。 Java有什么简单的方法吗?我还需要发送带有这些通知的对象。

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

谢谢!

最佳答案

对于BlackBerry,如果您计划这些事件是由UI元素(ButtonField,ListField等)生成的,它们都随Field.setChangeListener(FieldChangeListener)一起提供,因此您只需将侦听器附加到该事件即可。如果您希望它能够响应IO或处理之类的东西,则可以使用Event和EventListener类来完成此任务。就我个人而言,我认为它们比我简单通知所需要的要多,所以我通常会制作自己的简单界面。

假设您有一个扩展Thread的类,该类连接到Web服务,以下载列出状态及其首字母的XML文件。并处理它。您可以使用抽象方法public void addEventHandler(EventHandler)protected void notifyHandlers(Object obj)创建接口EventGenerator。在此内部,您将拥有一个Vector,用于存储您的notifyHandlers()可以循环通过的EventHandlers,并将调用发送给handler.handleEvent(Object)。处理完数据后,将其包装在Oject(也许是Hashtable或自定义的State Bean)中,我们将其称为states,并在内部调用notifyHandlers(states)。现在,当您浏览每个EventHandler时,将调用handler.handleEvent(states)。您可以考虑在每次调用周围进行try / catch,这样一个EventHandler不会阻止它们全部运行。

因此进入EventHandlers。这是另一个具有抽象方法public void handleEvent(Object obj)的接口。假设您有一个屏幕,在检索states之后,它将在列表中显示它们。该屏幕将实现EventHandler,然后使用generator.addEventHandler(this)向EventGenerator注册自己。每当处理完成时,都会调用此方法,并且您可以对返回的对象执行任何所需的操作。

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

关于java - Java事件处理帮助(通知与EventObjects),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6050124/

10-16 23:27