使用Intents或事件总线在同一个应用程序中进行通信

我了解如何使用Intents与系统/其他应用程序进行通信。 我理解如何在同一个App中使用Intent。 我也了解如何使用Otto在同一个App中进行通信。

使用Otto vs. Intents在我的活动/服务之间进行交流的Pro / Cons是什么?

使用Otto的优点:

  • 您可以设计自己的事件types,而不必使用自定义操作或某些东西来区分一个Intent和另一个Intent

  • 一切都在你自己的过程中(与startActivity()和kin相反,即使你开始的活动在你自己的应用程序中,它总是涉及IPC),速度和安全性

  • 编码少一点,因为您不必实例化IntentFilterBroadcastReceiver对象

  • 它提供了制作人模式(作为粘性广播的准替代品)

  • 不属于操作系统,它有可能更频繁地更新

使用Otto的缺点:

  • 它无法启动活动

  • 它无法启动服务

  • 它无法绑定到服务

  • 它无法发送广播

  • 它不能用于PendingIntent或任何真正的IPC

IOW,Otto的真正比较是使用LocalBroadcastManager ,而不是使用Intents