意图 - setData vs Extras

时间:2016-02-18 17:49:09

标签: java android android-intent

我不太了解数据字段对于意图的真正目的。

我见过以下一些例子:

Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:"+number));
        startActivity(intent);

因此,从文档中可以看出,Data只是为您提供了URI,基本上是数据所在的位置。

不能只使用putExtra完成所有操作,只需让Activity获得额外费用。

对于上面的示例,您可以将电话号码放在额外的电话号码中,让活动获得额外的电话号码,然后拨打。您何时可以使用setData vs putExtra

2 个答案:

答案 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。