我用奥托事件总线已经有一段时间了,很好。您认为在包内的广播接收器实现上使用它或在更传统的接口侦听器模式上使用它有什么缺点吗?
例如,google建议让片段的主机活动实现一个接口,子片段可以从该接口调用其主机活动。这很好,除了用奥托更容易。我唯一能想到的是,拥有一个接口可以强制实现一些事件,但是基于otto的易用性,我并不介意只是仔细倾听我想要的。

最佳答案

谷歌建议这样做是因为他们不能仅仅建议人们使用其他的图书馆。他们的建议总是基于如何在android操作系统中完成而不需要任何额外的库(除了支持库)。
有一小部分性能影响(非常小),因为otto使用反射而不是编译的代码,但是,otto也缓存反射的“东西”,所以这个微小的性能影响只适用于某个事件类第一次被触发时。
正如您所提到的,有一个接口所做的契约执行,但是考虑到otto的易用性,只需稍微小心地编写代码是值得的。
LocalBroadcastReceivers可能是另一种选择,但是考虑到创建意图、意图过滤器等的所有代码,这是不值得的。
所以imho,是的,继续使用otto无处不在(我们在我目前正在开发的应用程序上做这项工作,这个应用程序平均每月有92万活跃用户)

10-02 13:16