我是开源贡献方格的忠实拥护者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/