Tự mình tạo Bundle
và sau đó thêm vào mục đích sẽ nhanh hơn.
Theo source code, Intent.putExtra(String, String)
phương pháp trông như thế này:
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
Vì vậy, nó sẽ luôn luôn kiểm tra lúc đầu nếu Bundle mExtras
đã được tạo. Đó là lý do tại sao nó có thể chậm hơn một chút với chuỗi các chuỗi bổ sung lớn. Intent.putExtras(Bundle)
trông như thế này:
public Intent putExtras(Bundle extras) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putAll(extras);
return this;
}
Vì vậy, nó sẽ kiểm tra if (mExtras == null)
chỉ một lần và sau đó thêm tất cả các giá trị vào nội Bundle mExtras
với 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
được hỗ trợ bởi một Map
(HashMap
để chính xác), do đó, việc thêm tất cả các chuỗi cùng một lúc vào bản đồ này cũng sẽ nhanh hơn việc thêm Strings từng cái một.
Nguồn
2013-08-01 10:29:19
Cảm ơn, đã sử dụng các gói từ anyways bắt đầu, chỉ cần tự hỏi nếu nó có thể được thực hiện tốt hơn. – Lunchbox
+1, do đó, việc thêm một số lượng lớn các giá trị chuỗi bằng cách sử dụng 'intent.putExtra()' sẽ có nó kiểm tra một gói mỗi lần, nhưng chỉ cần thêm một bó sẽ làm cho việc kiểm tra được thực hiện chỉ một lần. Làm cho tinh thần – Lunchbox
@Lunchbox Vâng, chính xác. Hơn nữa, một 'mExtras.putAll()' nên nhanh hơn nhiều cuộc gọi đến 'mExtras.putString()' (thông báo 'unparcel()' cuộc gọi). –