Android putSerializable vs putString

时间:2015-08-20 18:42:55

标签: android android-intent serializable

我有一个像这样定义的POJO对象:

public class MYPOJO implements Serializable {

    int myint;
    String mystring;
}

然后当我将信息传递给活动时,我这样做:

Intent i = new Intent(this, WearActivity.class);
        Bundle b = new Bundle();
        MYPojo pojo = new MYPojo();
        pojo.mystring="cool";
        b.putSerializable("someString", pojo.mystring);//this line is my issue
        i.putExtra("coolBundle",b);

        startActivityForResult(i, 0);

并阅读额外的'someString':

Bundle b2 = getIntent().getBundleExtra("coolBundle");
        b2.getString("someString");

所以现在问我的问题:如果我执行以下操作是否真的有任何区别,如果最后我仍然要求检索b2.getString(“someString”):

b.putString("someString",pojo.mystring) 

vs

b.putSerializable("someString",pojo.mystring) ?

1 个答案:

答案 0 :(得分:1)

在实践中,除了"效率"之外,在传递字符串或在活动之间传递可序列化的字符串之间没有区别。或可能使用反射/安全。它可能更像是一个设计和原则问题,我将字符串传递给" serializable"。基本上,通过将String作为Serializable传入,Android / Java将使用String的包装器,它包含幕后的char []数据结构。

TLDR;如果您的POJO包含更多数据,我强烈建议您实施Parcelable。更多信息可以在这个SO答案here中找到。但是如果你要传递一个String,我会使用Android为我们提供的putString / getString方法。