Lun*_*box 5 performance android bundle android-intent
什么更快?将一堆字符串值添加到a bundle然后将其添加到intent?或者只是将值添加到intent使用intent.putExtra()?或者它没有太大区别?
谷歌搜索给了我教程,但没有太多答案.只是出于好奇,想知道是否会影响使用其中一个的性能.这很接近,但没有回答我想知道的事情.
Bundle自己创建然后将其添加到意图中应该会更快。
根据源代码,Intent.putExtra(String, String)方法如下:
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
Run Code Online (Sandbox Code Playgroud)
因此,它总是首先检查是否Bundle mExtras已经创建。这就是为什么在添加大量字符串时它可能会慢一些。Intent.putExtras(Bundle)看起来像这样:
public Intent putExtras(Bundle extras) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putAll(extras);
return this;
}
Run Code Online (Sandbox Code Playgroud)
因此,它只会检查一次,然后将所有值添加到if (mExtras == null)内部:Bundle mExtrasBundle.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;
}
Run Code Online (Sandbox Code Playgroud)
Bundle由 a 支持Map(HashMap准确地说),因此一次将所有字符串添加到此映射应该也比逐个添加字符串更快。
| 归档时间: |
|
| 查看次数: |
1494 次 |
| 最近记录: |