我使用 Otto 事件总线已经有一段时间了,它很棒。您能想到将它用于包中的 BroadcastReceiver 实现或更传统的接口侦听器模式有什么缺点吗?
例如,Google 建议让 Fragment 的宿主 Activity 实现一个接口,子 Fragment 可以通过该接口调用其宿主 Activity。这很棒,除了使用 Otto 更容易。我能想到的唯一一件事就是拥有一个接口可以强制实现一些事件,但基于 Otto 的易用性,我并不介意只是仔细听我想要的。
我使用 Otto 事件总线已经有一段时间了,它很棒。您能想到将它用于包中的 BroadcastReceiver 实现或更传统的接口侦听器模式有什么缺点吗?
例如,Google 建议让 Fragment 的宿主 Activity 实现一个接口,子 Fragment 可以通过该接口调用其宿主 Activity。这很棒,除了使用 Otto 更容易。我能想到的唯一一件事就是拥有一个接口可以强制实现一些事件,但基于 Otto 的易用性,我并不介意只是仔细听我想要的。
谷歌建议这样做,因为他们不能只建议人们使用其他图书馆。他们的建议总是基于如何在没有任何额外库(除了支持库)的情况下在 Android 操作系统中完成。
有一小部分性能影响(非常小),因为 otto 使用反射而不是编译代码,但是,Otto 还缓存了反射的“东西”,因此这种微小的性能影响仅适用于某个事件类第一次被触发时。
正如您所提到的,接口可以执行合同,但考虑到 Otto 的易用性,只需特别小心地编写代码是值得的。
LocalBroadcastReceivers 可能是一种替代方案,但考虑到创建意图、意图过滤器等的所有代码,这并不值得。
所以恕我直言,是的,继续前进并在任何地方使用 Otto(我们正在我目前正在开发的应用程序上这样做,该应用程序每月平均有 920K 活跃用户)