使用 Otto 代替一切
Using Otto in place of everything
我使用 Otto 事件总线有一段时间了,它很棒。您能想到在包内的 BroadcastReceiver 实现或更传统的接口侦听器模式上使用它的任何缺点吗?
例如,Google 建议让片段的主机 activity 实现一个接口,子片段可以从该接口调用其主机 activity。这很棒,但使用 Otto 更容易。我唯一能想到的是有一个接口可以强制执行一些事件,但基于 Otto 的易用性我真的不介意只是仔细听我想要的。
Google 建议,因为他们不能只是建议人们使用其他库。他们的建议总是基于如何在 Android OS 内部完成而无需任何额外的库(除了支持库)。
有一小部分性能损失(非常小)因为 otto 使用反射而不是编译代码,但是,Otto 也缓存了反射 "stuff" 所以这种微小的性能损失只适用于第一次事件 class 被解雇。
正如您所提到的,接口执行合同执行,但考虑到 Otto 的易用性,编码时要格外小心。
LocalBroadcastReceivers 可能是一个替代方案,但考虑到创建意图、意图过滤器等的所有代码,这是不值得的。
所以恕我直言,是的,继续并在任何地方使用 Otto(我们正在我目前开发的应用程序上这样做,每月平均有 92 万活跃用户)
我使用 Otto 事件总线有一段时间了,它很棒。您能想到在包内的 BroadcastReceiver 实现或更传统的接口侦听器模式上使用它的任何缺点吗?
例如,Google 建议让片段的主机 activity 实现一个接口,子片段可以从该接口调用其主机 activity。这很棒,但使用 Otto 更容易。我唯一能想到的是有一个接口可以强制执行一些事件,但基于 Otto 的易用性我真的不介意只是仔细听我想要的。
Google 建议,因为他们不能只是建议人们使用其他库。他们的建议总是基于如何在 Android OS 内部完成而无需任何额外的库(除了支持库)。
有一小部分性能损失(非常小)因为 otto 使用反射而不是编译代码,但是,Otto 也缓存了反射 "stuff" 所以这种微小的性能损失只适用于第一次事件 class 被解雇。
正如您所提到的,接口执行合同执行,但考虑到 Otto 的易用性,编码时要格外小心。
LocalBroadcastReceivers 可能是一个替代方案,但考虑到创建意图、意图过滤器等的所有代码,这是不值得的。
所以恕我直言,是的,继续并在任何地方使用 Otto(我们正在我目前开发的应用程序上这样做,每月平均有 92 万活跃用户)