【发布时间】:2012-09-20 06:03:07
【问题描述】:
来自安卓文档:
注意:看到 Parcelable 可能引发了一个问题,为什么 Android 不使用内置的 Java 序列化机制?事实证明,Android 团队得出的结论是,Java 中的序列化速度太慢,无法满足 Android 的进程间通信要求。因此,该团队构建了 Parcelable 解决方案。 Parcelable 方法要求您显式序列化类的成员,但最终,您可以更快地序列化对象。
所以我们知道 Parcelable 实际上比 Serializable 更好,但另一方面,
还要意识到 Android 提供了两种机制,允许您将数据传递给另一个进程。第一种是使用意图将捆绑包传递给活动,第二种是将 Parcelable 传递给服务。这两种机制不可互换,不应混淆。也就是说,Parcelable 并不意味着传递给活动。 如果您想启动一项活动并为其传递一些数据,请使用捆绑包。 Parcelable 仅用作 AIDL 定义的一部分。
好的,但是我需要将自定义对象列表传递给我的活动!所以在捆绑包中我仍然需要放入可打包或可序列化的对象!
现在我是这样做的:
public class MyObject implements Serializable{
并通过:
Bundle b = new Bundle();
b.putSerializable("objList", anArrayListWithMyObjectElements);
intent.putExtra("objList", b);
因为 ArrayList 也实现了 Serializable 它工作正常...但我看不出以这种方式使用捆绑包的意义...但是 android 告诉我不要使用 Parcelable 进行活动通信...正确答案是什么? ?
【问题讨论】:
标签: android