自己创建Bundle然后将其添加到intent应该更快.
根据source code,Intent.putExtra(String,String)方法如下所示:
public Intent putExtra(String name,String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name,value);
return this;
}
因此,它将始终检查是否已创建Bundle mExtras.这就是为什么对于大量的String添加可能会慢一点. Intent.putExtras(Bundle)看起来像这样:
public Intent putExtras(Bundle extras) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putAll(extras);
return this;
}
因此,它将仅检查(mExtras == null)一次,然后使用Bundle.putAll()将所有值添加到内部Bundle mExtras:
public void putAll(Bundle map) {
unparcel();
map.unparcel();
mMap.putAll(map.mMap);
// fd state is now known if and only if both bundles already knew
mHasFds |= map.mHasFds;
mFdsKnown = mFdsKnown && map.mFdsKnown;
}
Bundle由Map(确切地说是HashMap)备份,因此将所有字符串一次添加到此映射也应该比逐个添加字符串更快.