【发布时间】:2014-11-05 17:08:10
【问题描述】:
我试图找出在 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 相比如何?快点?慢点?几乎没有区别?
【问题讨论】:
-
同样的事情。在内部,您在包裹对象中写入和读取。
-
要添加另一种方法,如果您在多个活动之间共享相同的对象,您可能希望使用单例方法而不是传递它们。
-
单例存在状态不确定性问题。因此,您可能会发现类方法的输出令人毛骨悚然……无法确定。
标签: java android serialization bundle parcelable