2

我使用 Otto 事件总线已经有一段时间了,它很棒。您能想到将它用于包中的 BroadcastReceiver 实现或更传统的接口侦听器模式有什么缺点吗?

例如,Google 建议让 Fragment 的宿主 Activity 实现一个接口,子 Fragment 可以通过该接口调用其宿主 Activity。这很棒,除了使用 Otto 更容易。我能想到的唯一一件事就是拥有一个接口可以强制实现一些事件,但基于 Otto 的易用性,我并不介意只是仔细听我想要的。

4

1 回答 1

3

谷歌建议这样做,因为他们不能只建议人们使用其他图书馆。他们的建议总是基于如何在没有任何额外库(除了支持库)的情况下在 Android 操作系统中完成。

有一小部分性能影响(非常小),因为 otto 使用反射而不是编译代码,但是,Otto 还缓存了反射的“东西”,因此这种微小的性能影响仅适用于某个事件类第一次被触发时。

正如您所提到的,接口可以执行合同,但考虑到 Otto 的易用性,只需特别小心地编写代码是值得的。

LocalBroadcastReceivers 可能是一种替代方案,但考虑到创建意图、意图过滤器等的所有代码,这并不值得。

所以恕我直言,是的,继续前进并在任何地方使用 Otto(我们正在我目前正在开发的应用程序上这样做,该应用程序每月平均有 920K 活跃用户)

于 2015-02-17T16:59:39.493 回答