我不太了解数据字段对于意图的真正目的。
我见过以下一些例子:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
因此,从文档中可以看出,Data只是为您提供了URI,基本上是数据所在的位置。
不能只使用putExtra
完成所有操作,只需让Activity
获得额外费用。
对于上面的示例,您可以将电话号码放在额外的电话号码中,让活动获得额外的电话号码,然后拨打。您何时可以使用setData
vs putExtra
?
答案 0 :(得分:4)
可以使用putExtra完成所有操作,只需让Activity获得额外的功能。
其他内容不控制Intents
的路由。操作字符串,数据(Uri
),MIME类型和类别。额外只是有效载荷。
在这种情况下,ACTION_CALL
tel:
的{{1}}的处理方式可能与Uri
ACTION_CALL
的{{1}}不同。只有SIP兼容的VOIP客户端才能处理后者。因此,与电话相关的应用程序的活动可以在其sip:
元素中包含详细信息,以便仅监视它们可以处理的Uri
方案(以及其他可能的约束)。
答案 1 :(得分:0)
putExtra实际上是在意图中添加数据。当它被发送到另一个被反序列化的活动时,它会被序列化。这些都是昂贵的操作,可能会影响性能。像这样可以发送多少数据也有限制。如果你有一大块数据(几个MB),那么最好使用setData而不是putExtra。