【问题标题】:Can square's otto be used as replacement of intent?Square的otto可以代替intent吗?
【发布时间】:2016-07-13 02:33:19
【问题描述】:

作为一个新的 android 开发人员,在我看来,将数据从一个 Activity 传递到一个片段或将一个片段传递到一个 Activity 需要编写太多代码。想知道 otto 库可以用作传递数据的意图的替代品吗?它可以作为安卓应用中唯一的数据传递机制吗?

【问题讨论】:

    标签: android android-intent otto


    【解决方案1】:

    我认为这可能是可能的,但它不是我想要维护的代码。

    消息总线的使用假定消息的发送者和接收者同时存在并且处于活动状态。在通过 Intent 从一个 Activity 转换到另一个 Activity 的情况下,目标 Activity 通常不存在,如果存在,则它不处于活动状态。因此,在这种模式下,不可能用总线消息替换 Intent。

    Otto 确实支持“生产者”,可以使用它来执行此操作,但我真的不建议这样做。

    如果您必须在活动之间传递大量数据,那么您可能遇到了一些设计问题。这通常表明您已将所有内容都填充到您的活动中,而不是拥有一个适当的、单独的数据模型。

    【讨论】:

    • 只是好奇,你和 Linus Torvalds 有关系吗?...你只是喜欢他没有胡子。
    • 感谢您的有用回答。从您的回答中,我知道可以使用 otto 执行此类操作,但为此,我必须编写一些难以维护的代码。实际上,我没有在 android 上找到这些数据传递和捆绑问题的可靠模式。类似活动到活动是一种方式,但是对于设备旋转,必须管理 savedInstanceState 并且存在片段到活动、片段到片段数据传递问题。是否有任何资源可以指导我们完成所有这些数据传递机制。 @GreyBeardedGeek
    • 我认为您可能会找到的唯一可靠资源是有关如何通过 Intents 传递数据的官方 Android 文档。我已经成功地将 Otto 用于 Activity Fragment 通信(这也有助于处理 Fragment 生命周期)和其他通信,其中假设通信的所有各方都已注册到总线(准备对输入采取行动),或未注册。这不起作用的一个地方是 Activity Activity,因为一次只有一个处于活动状态(应该注册到总线)。
    【解决方案2】:

    想知道 otto 库是否可以用作传递数据的意图的替代品?
    是的,我们可以使用 otto(或其他事件总线)作为传递数据的手段。

    它可以用作安卓应用程序中唯一的数据传递机制吗?
    可以是或不是。看你的需要。如果您使用活动和片段,则使用 Intent 和 Bundle。但是当你想在activity和fragment之间communicate时,你可以使用otto。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多