EventBus android 实现,为什么要反射

EventBus android implementation, why reflection

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

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

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

Event Bus的一些真正优势用途:

  • 快速简单的一对多事件(单个调度器 - 多个接收器)
  • 来自您应用任何部分的全局引用
  • sending/receiving 个事件 from/to 个不同的线程
  • 速度
  • 粘性事件(在初始竞争条件场景中非常方便),尤其是涉及多个数据层

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

你也可以看到这个comparison

LocalBroadcastManager 1) 无法满足以上所有条件 2) 需要更多编码才能 dispatch/listen