我的要求是,我正在寻找一种轻量级事件框架,该框架在Android和Java Fx(Windows和Linux平台)中兼容,以便在两种技术中都可以无缝运行。

我研究了现有的基于事件的框架。
1)Eventing framework mbassador(by bennidi)->是否与android 4.0兼容(冰淇淋三明治)
因为它可以与javafx很好地工作,并且重量轻,性能也很好。
2)Guava EventBus:-从文档看,它与android兼容,但性能如何,比mbassador好。

最佳答案

事件框架MBassador与Android 4.0兼容。Guava Event Bus是轻量级的,并且与两种技术都兼容。

以上两个框架都很轻巧,并且为订阅/发布模式提供了可靠的机制,并且根据MBassador的描述,其初始设计是从Guava Event Bus启发而来的,但是在某些情况下,对Guava Event Bus中使用的侦听器的强引用是有问题的。

根据GitHub MBassador中说明中的学分部分

创建此组件的最初灵感来自试用Google Guava的事件总线实现。我喜欢它设计的简单性,并且我非常信任Google的开发人员,因此很高兴发现他们还提供了事件总线系统。它被证明对我们的场景不可用的主要原因是它使用了对侦听器的强引用,因此必须显式注销每个对象。在我们的Spring托管环境中,这很困难。最后,我决定创建一个自定义实现,然后逐渐成熟以实现稳定,可扩展且非常高效

两种框架都很健壮,轻巧,取决于您使用哪种框架。

我在[Java事件总线库比较]](http://codeblock.engio.net/?p=37)上发现了性能比较。 。

编辑:我删除了图片快照,只关注最终结果,

所比较的实现方案显示的性能特征表明:
1.对于所有实现,除了MBassador和Guava之外,侦听器订阅都是一项昂贵的操作
2.并发访问通常会因为更高的访问速度而降低总线性能
竞争/同步。
3. SimpleBus是迄今为止最慢的实现。
4. MBassador是迄今为止最快的实施
场景。它还具有最佳的缩放特性,这意味着较高的并发率不会像其他总线一样降低总线性能。这是因为MBassador依赖于具有快速写入操作的自定义数据结构,该写入操作不会阻塞读取器,并且同时不会复制现有数据结构(大多数其他实现使用CopyOnWriteArrayList)。

总结在过去的几个月中,我们一直在使用MBassador,它满足了我们的要求,在 Android,JavaFX 中运行良好,并且在简单的Java 中也可以在上很好地运行。Linux,Windows,Mac 等操作系统

07-24 09:24