我正在试图找出在android中将对象从一个活动传递到另一个活动的最有效方法。我读过我可以将对象扩展为Parcelable或Serializable,看起来Parcelable在性能方面是明显的赢家。
现在我只是想到了另一种方式。我将所有数据变量放入一个包中,传递这些数据并重建对象,而不是扩展任何类。例如:
public class myObject {
// Data Variables
private String str1;
private String str2;
private boolean bool1;
// Constructor
public myObject(String str1, String str2, boolean bool1){
this.str1 = str1;
this.str2 = str2;
this.bool1 = bool1;
}
}
现在我只传递变量:
Intent i = new Intent();
i.setClass(ActOne.this, ActTwo.class);
Bundle bundle = new Bundle();
bundle.putString("KEY_STR1", str1);
bundle.putString("KEY_STR2", str2);
bundle.putBoolean("KEY_BOOL1", bool1);
startActivity(i);
在ActTwo类中,我将从意图中获取数据并重建我的对象:
myObject newObjHolder = new myObject(str1, str2, bool1);
这种方式与传递Parcelable相比如何?快点?慢点?几乎没有什么区别?
答案 0 :(得分:0)
如果你仔细一点,你会发现Bundle只是一个Parcelable。 所以,你可能正在研究一对夫妇,但非常小,几毫秒的效率低于你建议的方式。
我会告诉你原因:
Parcelables
必须写入Parcel
并且您正在Bundle中写入,然后此Bundle会将其写入Parcel。所以你确实增加了一些开销,但是你可以做一个类似于@bhowden指向的链接的测试,看看它会非常小。
那么你必须决定你是否更喜欢Bundle的代码或者Parcelable的速度。