【问题标题】:Using Intents or an event bus to communicate within the same app使用 Intent 或事件总线在同一个应用程序中进行通信
【发布时间】:2013-06-26 10:44:13
【问题描述】:

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

使用 Otto 与 Intent 在我的活动/服务之间进行通信的优缺点是什么?

【问题讨论】:

  • 这个问题不应该被关闭。得到的答案非常丰富,准确地回答了我的问题。答案是基于事实的利弊,所以这个问题并没有产生主要基于意见的答案。

标签: android android-intent otto


【解决方案1】:

使用 Otto 的优点:

  • 您可以设计自己的事件类型,而不必使用自定义操作或其他东西来区分 Intent 与另一个

  • 一切都在您自己的流程中(与 startActivity() 和 kin 相比,它们总是涉及 IPC,即使您开始的活动是在您自己的应用程序中),为了速度和安全

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

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

  • 由于不是操作系统的一部分,它有可能会更频繁地更新

使用 Otto 的缺点:

  • 无法启动活动

  • 无法启动服务

  • 无法绑定到服务

  • 无法发送广播

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

IOW,Otto 的真正比较是与LocalBroadcastManager,而不是与Intents 的一般用法。

【讨论】:

  • 谢谢。所以与 LocalBroadCastManager 相比,它仍然有很多优点,但没有缺点?
  • @MartinS.:与LocalBroadcastManager 相比,除了第二个优点之外,优点都是有效的(因为LocalBroadcastManager 也是如此)。你说得对,缺点都消失了。
  • @CommonsWare 也是最后一个,因为 LocalBroadcastManager 是支持库的一部分,它只包含在您的 apk 中。
  • @CommonsWare 知道他的洋葱!
  • 比LBM好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多