什么更快?将一堆字符串值添加到bundle
,然后将其添加到intent
?或者只是使用intent
将值添加到intent.putExtra()
?或者它没有太大区别?
谷歌搜索给了我教程,但没有太多答案。只是出于好奇,想知道它是否会影响使用其中一个的性能。 This接近了,但没有回答我想知道的事情。
答案 0 :(得分:4)
自己创建Bundle
然后将其添加到意图应该更快。
根据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;
}
因此,它只会检查if (mExtras == null)
一次,然后使用Bundle mExtras
将所有值添加到内部Bundle.putAll()
:
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
)备份,因此将所有字符串一次性添加到此映射中也应该比逐个添加字符串更快。 / p>