来自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进行活动通信......什么是正确的答案? ?
答案 0 :(得分:3)
在我的经验中,我强烈建议您尽可能使用Parcelable
,无论是否使用IPC。这是Android的事实上的替代Java的Serializable
,它更加优化。
如果您需要有关如何包裹物体的帮助,请告诉我。