传递Parcelable / Serializable与传递对象的数据成员

时间:2014-09-11 16:34:18

标签: java android serialization bundle parcelable

我正在试图找出在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相比如何?快点?慢点?几乎没有什么区别?

1 个答案:

答案 0 :(得分:0)

如果你仔细一点,你会发现Bundle只是一个Parcelable。 所以,你可能正在研究一对夫妇,但非常小,几毫秒的效率低于你建议的方式。

我会告诉你原因: Parcelables必须写入Parcel并且您正在Bundle中写入,然后此Bundle会将其写入Parcel。所以你确实增加了一些开销,但是你可以做一个类似于@bhowden指向的链接的测试,看看它会非常小。

那么你必须决定你是否更喜欢Bundle的代码或者Parcelable的速度。