EventBus android实现,为何反思

时间:2015-07-03 08:43:22

标签: java android reflection event-driven event-bus

我在我的项目中使用EventBus,它运作良好,但有些大学说他们有这个库的问题。我不是在讨论EventBus模式的concreate实现,有两种广泛使用的实现 但他们都使用反射。反思并不便宜,特别是在移动设备上 所以我的问题是为什么不避免使用反射? 我的想法是,例如,使用Android Service作为事件总线管理器,或者您可以使用在应用程序生命周期中可用的自定义应用程序类。例如,服务将能够注册订阅者,通知他们,取消注册... EventBus可以做的一切。至于服务是高优先级的组件,我们可以确定当我们需要发送事件时它会活着,如果我们将在应用程序类中引用它,例如。 关于订阅者,为什么不实现通用接口OnEventSubscriber<E extends BaseEvent>,如果您对多个事件感兴趣,可以使用适当的事件类型实现另一个接口。并实现具有特定类型的onEvent方法。

为什么当前的实现使用反射方法而不是上面描述的内容?创建这些库的人是经验丰富的开发人员,因此必须有实现原因的原因 我将不胜感激任何解释和评论。 Thx提前。

1 个答案:

答案 0 :(得分:1)

请详细说明您指的是哪个EventBus实施?

LocalBroadcastManager的一些真正优势:

  • 快速简单的一对多事件(单一调度员 - 多个接收器)
  • 来自应用程序任何部分的全局参考
  • 从/向不同线程发送/接收事件
  • 速度
  • 粘性事件(在初始竞争条件情况下非常方便),尤其是涉及多个数据层的情况

实现上述所有目标的强大事件总线是Greenrobot EventBus

您也可以看到此comparison

<head> <link rel="stylesheet" type="text/css" href="css/bibliopdf.css"> <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> </head> <script> function myFunction() { $("#h01").text("Hello jQuery"); } $(document).ready(myFunction); </script> 1)不能满足以上所有2)需要更多编码来发送/收听