我是开源贡献方格的忠实拥护者Square对Android社区所做的贡献,并一直在研究他们的最新贡献Otto(事件总线)

http://square.github.io/otto/

深入研究,我发现Otto使用反射并且没有有序广播(一种模式,在这种模式下,一个未使用的消息从一个接收者传递到下一个接收者,监听相同类型的事件)Otto相信更多的是“忘却”模式。

现在,Android在其v4支持库中具有LocalBroadcastManager(LBM),该库具有相同的目的,尽管它更笨重,并且对传递的对象有更多限制。但从好的方面来说,它确实支持有序广播,并且更类似于普通广播。

奥托(Otto)和LBM都在同一个处理空间内,因此就速度而言,我猜两者都将相同。我能看到的唯一真正的区别是Otto允许您定义自定义事件,而不必序列化/打包Objects。

因此,我真正的问题是,如果LBM做同样的事情,您何时会使用Otto。

引用 :

http://nick.perfectedz.com/otto-event-system/

Using Intents or an event bus to communicate within the same app

https://plus.google.com/107049228697365395345/posts/6j4ANWngCUY

最佳答案



并不真地。 sendOrderedBroadcast()上没有LocalBroadcastManager,并且IntentFilter上的优先级似乎未使用。如果您的意思是“广播将按照我注册接收者的顺序发送”,这可能是当前的行为,但不能保证它会一直保持这种状态。



它们将是相似的,尽管可能不相同。



比较这两者,Otto拥有更简洁的API,即IMHO。

就个人而言,我会在其中任何一个上使用greenrobot's EventBus,因为它提供了更灵活的线程模型。

关于android - 奥托vs LocalBroadcast :,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22871206/

10-10 01:46