像这样传递变量之间的区别是什么:
Intent intent = new Intent(mCtx, DetailsActivity.class);
intent.putExtra("pId", id);
intent.putExtra("pType", type);
mCtx.startActivity(intent);
并且使用关键字CCD_ 1?
Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
// Now let's Pass data using Bundle
Bundle bundle = new Bundle();
bundle.putString("pId", id);
bundle.putString("pType", type;
intent.putExtras(bundle);
startActivity(intent);
我是安卓开发的新手,我很好奇在进行安卓开发时,哪种方法更好?
意图
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
捆绑
public void putString(String key, String value) {
unparcel();
mMap.put(key, value);
}
putExtras不会将您的捆绑包放入Intent中。相反,它将其复制到当前的intent捆绑包中。
public Intent putExtras(Bundle extras) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putAll(extras);
return this;
}
建议使用第一种方法。所有样本都使用第一个putExtra(key,value(方法。
在大多数情况下,你应该知道你要传递给下一个活动的内容,所以putExtra(key,value(是有意义的,因为你知道密钥是什么
我能想到的使用第二种方法的唯一场景是一个临时活动,它从上一个活动接收捆绑包,并需要将所有信息传递给下一个活动。瞬态活动不需要知道传递了什么,只需将接收到的所有内容传递给下一个活动即可。
顺便说一句,如果你创建了自己的Bundle,把键值放进去,然后调用putExtra(Bundle(,临时Bundle会有额外的成本,所以效率较低。
像这样传递变量和使用关键字Bundle有什么区别?
一个直接放入密钥,一个先将它们放入Bundle中。最终结果是一样的。
我是Android开发的新手,我很好奇在进行Android开发时,哪种方法更好或更稳定?
第一个是"更好";或更多";标准";仅仅因为它消除了首先自己创建捆绑包的需要——这是一个多余的步骤。如果您的代码已经有一些逻辑来维护Bundle
的数据,并且您希望在Intent
中传递这些数据作为键/值对,那么您实际上只需要使用该方法。