# android中Serializable 比 Parcelable好在哪? 站点:答源(https://www.dandroid.cn/) 原文:https://www.dandroid.cn/archives/21115 Canonical:https://www.dandroid.cn/archives/21115 作者:admin 发布日期:2023-09-25 最后更新:2023-09-25 16:05 分类:教程 内容类型:post 说明:本页是原文的纯文本镜像,供大模型与检索器完整读取;不含导航、广告、付费框。引用请以上方「原文」链接为准。 ## 正文 一、序列化的目的: (1)永久的保存对象,将对象数据保存在文件、磁盘或者数据库中 。 (2)通过序列化操作将对象数据在网络上进行传输 。 (3)将对象序列化之后在进程间进行传输。 (3)在安卓中使用 Intent 进行传输时候,数据类型较为复杂的需要进行序列化操作 。 二、两者区别: (1). 在使用内存的时候,Parcelable 类比 Serializable 性能高,所以推荐使用 Parcelable 类。 (2). Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的 GC。 (3). arcelable 不能使用在要将数据存储在磁盘上的情况。尽管 Serializable 效率低点,但在这种情况下,还是建 议你用 Serializable. (4). Serializable的实现,只需要实现Serializable接口即可。这只是给对象打了一个标记(UID),系统会自动将其序列化。而Parcelabel的实现,不仅需要实现Parcelabel接口,还需要在类中添加一个静态成员变量CREATOR,这个变量需要实现 Parcelable.Creator 接口,并实现读写的抽象方法。 **Serializable 用法** public class User implements Serializable { private String name; private String age; public User(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + ''' + ", age='" + age + ''' + '}'; } } 通过上述代码中,可知Serializable序列化 之需要实现Serializable接口即可,使用比较简单; **Parcelable 用法** public class User implements Parcelable { public int id; public String age; public String name; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.id); dest.writeString(this.age); dest.writeString(this.name); } public User() { } protected User(Parcel in) { this.id = in.readInt(); this.age = in.readInt(); this.name = in.readString(); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public User createFromParcel(Parcel source) { return new User(source); } @Override public User[] newArray(int size) { return new User[size]; } }; } 通过代码可看Parcelabel的实现,不仅需要实现Parcelabel接口,还需要在类中添加一个静态成员变量CREATOR,这个变量需要实现 Parcelable.Creator 接口,并实现读写的抽象方法。 文章来源于互联网:安卓中Serializable 比 Parcelable好在哪? --- 由 答源 DAN 底座 1.4.1 生成 · 2026-11-11T03:21:16+00:00