将自定义对象列表传递给活动:parcelable或serializable?

时间:2012-09-28 10:47:38

标签: android

来自android文档:

  

注意:看到Parcelable可能触发了这个问题,为什么Android没有使用内置的Java序列化机制?事实证明,Android团队得出结论,Java中的序列化速度太慢,无法满足Android的进程间通信要求。因此团队构建了Parcelable解决方案。 Parcelable方法要求您显式序列化类的成员,但最终,您可以更快地对对象进行序列化。

所以我们知道Parcelable实际上比Serializable 更好,但另一方面,

  

还要意识到Android提供了两种机制,允许您将数据传递给另一个进程。第一种是使用intent将bundle传递给活动,第二种是将Parcelable传递给服务。这两种机制不可互换,不应混淆。也就是说,Parcelable并不意味着传递给活动。 如果要启动活动并将其传递给某些数据,请使用捆绑包。 Parcelable仅用作AIDL定义的一部分

好的,但是我需要将一个自定义对象列表传递给我的活动!所以进入捆绑包我仍然需要放置一个parcelable或者可序列化的颜色!

现在我这样做了:

public class MyObject implements Serializable{

并通过:

 Bundle b = new Bundle();
 b.putSerializable("objList", anArrayListWithMyObjectElements);
 intent.putExtra("objList", b);

由于ArrayList也实现了Serializable,它工作得很好......但我没有看到以这种方式使用bundle的意义......但是android告诉我不要使用Parcelable进行活动通信......什么是正确的答案? ?

1 个答案:

答案 0 :(得分:3)

在我的经验中,我强烈建议您尽可能使用Parcelable,无论是否使用IPC。这是Android的事实上的替代Java的Serializable,它更加优化。

如果您需要有关如何包裹物体的帮助,请告诉我。