对于意图,我不太理解数据字段的真正用途。
我见过以下例子:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);因此,从文档来看,数据似乎只是给出了URI,基本上是数据所在的位置。
不能所有事情都用putExtra来完成,让Activity得到额外的东西。
对于上面的例子,您只需将电话号码放入额外的,让活动得到额外的,然后拨。您什么时候使用setData vs putExtra?
发布于 2016-02-18 18:05:09
不能所有的事情都用putExtra来做,让活动得到额外的东西。
额外的不控制Intents的路由。操作字符串、数据(Uri)、MIME类型和类别可以执行。额外的只是有效载荷。
在这种情况下,ACTION_CALL of tel: Uri的处理方式可能与sip: Uri的ACTION_CALL不同。只有与SIP兼容的VOIP客户端才能处理后者。因此,与电话相关的应用程序的活动可以在其<intent-filter>元素中包含细节,以便只监视它们能够处理的Uri方案(以及其他可能的约束)。
发布于 2016-02-18 17:59:15
putExtra实际上在意图中添加了数据。当它被发送到另一个被反序列化的活动时,它就会被序列化。这些都是代价高昂的操作,可能会影响性能。像这样发送多少数据也是有限制的。如果您有大量的数据(几个MBs),那么最好使用setData而不是putExtra。
https://stackoverflow.com/questions/35488782
复制相似问题