intent extra和intent数据有什么区别?

时间:2014-01-23 08:42:30

标签: java android android-intent

我发现任何意图都有extra字段和data字段。

他们之间有什么区别,或者只是概念上的区别吗?

6 个答案:

答案 0 :(得分:4)

数据

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

数据返回URI

<强>附加功能

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

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

额外回归套装

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

答案 1 :(得分:0)

根据documentationgetData()返回Uri,而getExtras()返回Bundle。所以是的,存在差异,差异不仅仅是概念性的。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

intent的文档中提到:

数据:不是一个内容,它是一个URI,用于描述应该对指定的操作执行的操作。

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

答案 4 :(得分:0)

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

通常我会从Uri接近getData()来指示操作的位置。并且extra字段为Map/Bundle,用于将参数或参数放入我正在使用的意图中。

答案 5 :(得分:0)

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

您应该使用te extra field来传递非URI数据(URI,URL,电话号码等)。您通常可以使用额外字段,用于简单数据

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

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