我发现任何意图都有extra
字段和data
字段。
他们之间有什么区别,或者只是概念上的区别吗?
答案 0 :(得分:4)
数据强>
URI(一个Uri对象),它引用要作用的数据和/或该数据的MIME类型。提供的数据类型通常由意图的行为决定。例如,如果操作是ACTION_EDIT,则数据应包含要编辑的文档的URI。
数据返回URI
<强>附加功能强>
键值对,带有完成请求的操作所需的其他信息。正如某些操作使用特定类型的数据URI一样,某些操作也使用特定的附加功能。
Extras包含一个Bundle,它是HashMap的一个实现,用于存储特定数据的键值。
额外回归套装
有关Intent extra和Data的更多信息,请参阅this Url
答案 1 :(得分:0)
根据documentation,getData()
返回Uri
,而getExtras()
返回Bundle
。所以是的,存在差异,差异不仅仅是概念性的。
答案 2 :(得分:0)
intent中的数据包含要操作的URI,例如电子邮件客户端的URI。而Extras包含有关该URI的包,可以携带额外的数据信息,例如电子邮件客户端,您可以放入主题体等。
答案 3 :(得分:0)
答案 4 :(得分:0)
我不认为差异是概念性的。 getExtras()
返回bundle
,getData()
返回Uri
see documentation.
通常我会从Uri
接近getData()
来指示操作的位置。并且extra
字段为Map/Bundle
,用于将参数或参数放入我正在使用的意图中。
答案 5 :(得分:0)
概念或标签。这有点奇怪。这里的数据并不真正意味着数据。事实上,它根本就不是内容。
您应该使用te extra field来传递非URI数据(URI,URL,电话号码等)。您通常可以使用额外字段,用于简单数据
看看developer.android.com description 数据 - 要操作的数据,例如联系人数据库中的人员记录,表示为Uri(统一资源标识符)。
extras - 这是一个包含任何其他信息的捆绑包。这可用于向组件提供扩展信息。例如,如果我们有一个发送电子邮件的动作,我们还可以在这里包含额外的数据来提供主题,正文等。