事件总线与本地广播管理器:哪个更好?

6

我的应用程序严重依赖于本地广播,对于每个活动调用,我都会调用广播注册方法,因此是否应该转移至任何事件总线。

使用本地广播管理器的两个主要问题:

  1. 每个活动都需要注册
  2. 注册方法执行时间(约注册了10个操作)

我认为事件总线将改善我的应用程序的整体执行和性能。


请问有人可以确认一下吗? - Bytecode
使用Eventbus比LocalBroadcast更自由,即您可以通过事件总线发送复杂的数据对象而无需使用序列化。而且,Eventbus易于使用。 - Krish
3个回答

8
大多数事件总线库提供基于反射的注册,这种方式比LocalBroadcastManager效率低。使用事件总线的主要原因是编码的便利性。

2
这并不是真的:“由于注释的构建时间索引,EventBus在应用程序运行时不需要执行注释反射。”来自这里 - Archie.bpgc
1
你可能在谈论EventBus 3,而我写的是MOST。 - dev.bmax
顺便说一下,提到的功能(http://greenrobot.org/eventbus/documentation/subscriber-index/)是一个可选的优化功能,需要特定的Gradle插件和额外的样板代码,这可能并不适用于某些项目。 - dev.bmax

7
据我所知,使用事件总线而不是LocalBroadcastManager有一些优点:
  1. 代码解耦。
    通过解耦您的代码,您将最小化以前使用LocalBroadcastManager的类。更简单的代码,更少的错误,提高了代码的可读性。
  2. 易于维护。
    这与第一点有些相关,解耦的代码易于维护。
  3. 本地化错误。
  4. 避免复杂和容易出错的依赖关系和生命周期问题。
  5. 避免进一步出现错误。

4

EventBus常见问题解答

EventBus与Android的BroadcastReceiver/Intent系统有何不同?

与Android的BroadcastReceiver/Intent系统不同,EventBus使用标准Java类作为事件,并提供更为便捷的API。EventBus适用于更多的使用场景,在这些场景中,您不需要费力地设置Intents、准备Intent extras、实现广播接收器和再次提取Intent extras。此外,EventBus的开销要小得多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接