我在我的项目中使用EventBus,它运作良好,但有些大学说他们有这个库的问题。我不是在讨论EventBus模式的concreate实现,有两种广泛使用的实现
但他们都使用反射。反思并不便宜,特别是在移动设备上
所以我的问题是为什么不避免使用反射?
我的想法是,例如,使用Android Service作为事件总线管理器,或者您可以使用在应用程序生命周期中可用的自定义应用程序类。例如,服务将能够注册订阅者,通知他们,取消注册... EventBus可以做的一切。至于服务是高优先级的组件,我们可以确定当我们需要发送事件时它会活着,如果我们将在应用程序类中引用它,例如。
关于订阅者,为什么不实现通用接口OnEventSubscriber<E extends BaseEvent>
,如果您对多个事件感兴趣,可以使用适当的事件类型实现另一个接口。并实现具有特定类型的onEvent方法。
为什么当前的实现使用反射方法而不是上面描述的内容?创建这些库的人是经验丰富的开发人员,因此必须有实现原因的原因 我将不胜感激任何解释和评论。 Thx提前。
答案 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)需要更多编码来发送/收听