【发布时间】:2014-01-23 08:42:29
【问题描述】:
我看到任何意图都有extra 字段和data 字段。
它们之间有什么区别还是只是概念上的区别?
【问题讨论】:
标签: java android android-intent
我看到任何意图都有extra 字段和data 字段。
它们之间有什么区别还是只是概念上的区别?
【问题讨论】:
标签: java android android-intent
数据
引用要操作的数据的 URI(Uri 对象)和/或该数据的 MIME 类型。提供的数据类型通常由意图的操作决定。例如,如果操作是 ACTION_EDIT,则数据应包含要编辑的文档的 URI。
数据返回 URI
附加内容
携带完成请求操作所需的附加信息的键值对。正如某些操作使用特定类型的数据 URI 一样,某些操作也使用特定的附加信息。
Extras 包含一个 Bundle,它是 HashMap 的实现,用于存储特定数据的键值。
额外退货包
有关 Intent extra 和 Data 的更多信息,请参阅this Url
【讨论】:
根据documentation,getData() 返回一个Uri,而getExtras() 返回一个Bundle。所以是的,这是有区别的,区别不仅仅是概念上的。
【讨论】:
意图中的数据包含要操作的 URI,例如电子邮件客户端的 URI。 Extras 包含有关该 URI 的捆绑包,可以携带额外的数据信息,例如电子邮件客户端,您可以放入主题正文等。
【讨论】:
如intent 的文档中所述:
数据:不是内容,它是一个 URI,它描述了关于指定操作应该做什么。
并且 Extras 包含一个 Bundle,它是 HashMap 的一个实现,用于存储特定数据的键值。
【讨论】:
我不认为差异是概念性的。 getExtras() 返回 bundle 和 getData() 返回 Uri see documentation.
通常我从getData() 接近Uri 以指示在哪里进行操作。并将 extra 字段作为 Map/Bundle 将参数或参数放入我正在使用的意图中。
【讨论】:
概念或标签。这有点奇怪。这里的数据并不真正意味着数据。事实上,它根本不意味着内容。
您应该使用额外的字段来传递非 URI 数据(URI、URL、电话号码等)。对于简单数据
,您通常可以使用额外字段看developer.android.com description data -- 要操作的数据,例如联系人数据库中的人员记录,以 Uri(统一资源标识符)表示。
extras -- 这是任何附加信息的捆绑包。这可用于向组件提供扩展信息。例如,如果我们有一个发送电子邮件消息的操作,我们还可以在此处包含额外的数据以提供主题、正文等。
【讨论】: