【问题标题】:what is the difference between intent extra and intent data?意图额外数据和意图数据有什么区别?
【发布时间】:2014-01-23 08:42:29
【问题描述】:

我看到任何意图都有extra 字段和data 字段。

它们之间有什么区别还是只是概念上的区别?

【问题讨论】:

    标签: java android android-intent


    【解决方案1】:

    数据

    引用要操作的数据的 URI(Uri 对象)和/或该数据的 MIME 类型。提供的数据类型通常由意图的操作决定。例如,如果操作是 ACTION_EDIT,则数据应包含要编辑的文档的 URI。

    数据返回 URI

    附加内容

    携带完成请求操作所需的附加信息的键值对。正如某些操作使用特定类型的数据 URI 一样,某些操作也使用特定的附加信息。

    Extras 包含一个 Bundle,它是 HashMap 的实现,用于存储特定数据的键值。

    额外退货包

    有关 Intent extra 和 Data 的更多信息,请参阅this Url

    【讨论】:

      【解决方案2】:

      根据documentationgetData() 返回一个Uri,而getExtras() 返回一个Bundle。所以是的,这是有区别的,区别不仅仅是概念上的。

      【讨论】:

        【解决方案3】:

        意图中的数据包含要操作的 URI,例如电子邮件客户端的 URI。 Extras 包含有关该 URI 的捆绑包,可以携带额外的数据信息,例如电子邮件客户端,您可以放入主题正文等。

        【讨论】:

          【解决方案4】:

          intent 的文档中所述:

          数据:不是内容,它是一个 URI,它描述了关于指定操作应该做什么。

          并且 Extras 包含一个 Bundle,它是 HashMap 的一个实现,用于存储特定数据的键值。

          【讨论】:

            【解决方案5】:

            我不认为差异是概念性的。 getExtras() 返回 bundlegetData() 返回 Uri see documentation.

            通常我从getData() 接近Uri 以指示在哪里进行操作。并将 extra 字段作为 Map/Bundle 将参数或参数放入我正在使用的意图中。

            【讨论】:

              【解决方案6】:

              概念或标签。这有点奇怪。这里的数据并不真正意味着数据。事实上,它根本不意味着内容。

              您应该使用额外的字段来传递非 URI 数据(URI、URL、电话号码等)。对于简单数据

              ,您通常可以使用额外字段

              developer.android.com description data -- 要操作的数据,例如联系人数据库中的人员记录,以 Uri(统一资源标识符)表示。

              extras -- 这是任何附加信息的捆绑包。这可用于向组件提供扩展信息。例如,如果我们有一个发送电子邮件消息的操作,我们还可以在此处包含额外的数据以提供主题、正文等。

              【讨论】:

                猜你喜欢
                • 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
                相关资源
                最近更新 更多