Java数据的序列化总结

Android开发中经常需要用到序列化,系统提供了两个接口用来实现, · Parcelable · Serializable

今天说下这两个接口在实现上有什么区别

Serializable

Serializable是Java提供的接口,用来标识某一个类可以被序列化,用起来非常简单,只需要implement这个接口,提供get/set方法就可以

Parcelable

Parcelable是Android为了序列化而专门设计的接口类,效率比 Serializable更高。实现 Parcelable的demo像以下这样,

public class Girl implements Parcelable {

     private int mAge; // 年龄
     private boolean mSexy; // 是否性感

     @Override
     public void writeToParcel(Parcel dest, int flags) {
          dest.writeInt(mAge);
          dest.writeByte((byte) (mSexy ? 1 : 0));
     }

     public static final Parcelable.Creator<Girl> CREATOR = new Parcelable.Creator<Girl>() {
          public Girl createFromParcel(Parcel in) {
               Girl girl = new Girl();
               girl.mAge = in.readInt();
               girl.mSexy = in.readByte() != 0;
              return girl;
          }

          public Girl[] newArray(int size) {
              return new Girl[size];
          }
     };

     @Override
     public int describeContents() {
          return 0;
     }
}

通常有几个步骤, · 实现 Parcelable接口 · 实现 writeToParcel 方法 · 创建 CREATEOR,并实现 createFromParcel 和 newArray

区别

好了,说完这两个接口,来总结下这两个接口的区别 · Serializable 是Java提供的接口,本身序列化效率比 Android 的 Parcelable低 · 一般对于内存读写要求高的情况下用 Parcelable,程序间的数据传输也可以用 Parcelable · Serializable更适合在文件存储的场景。因为 Parcelable可能会在不同Android版本间存在兼容问题,因此对于数据持久化存储的场景不建议用Parcelable

原文发布于微信公众号 - Android每日一讲(gh_f053f29083b9)

原文发表时间:2018-03-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GIS讲堂

Arcgis4js实现链家找房的效果

买房的各位亲们不知是否留意过链家的"地图找房",这样的功能对于使用者来说,是非常方便的,大家可通过连接(https://bj.lianjia.com/ditu/...

13620
来自专栏wannshan(javaer,RPC)

ConcurrentHashMap 锁分段 源码分析

看ConcurrentHashMap下几个属性: /** * The default concurrency level for this table...

42660
来自专栏Java 源码分析

SpringBoot 笔记(十一):Servlet容器

27820
来自专栏HansBug's Lab

1726: [Usaco2006 Nov]Roadblocks第二短路

1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MB Submi...

33260
来自专栏Android 研究

APK安装流程详解14——PMS中的新安装流程上(拷贝)补充

mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACK...

41710
来自专栏linux驱动个人学习

高通Audio中ASOC的codec驱动(二)

继上一篇文章:高通Audio中ASOC的machine驱动(一) ASOC的出现是为了让codec独立于CPU,减少和CPU之间的耦合,这样同一个codec驱动...

1.1K60
来自专栏java相关

基于注解实现SpringBoot多数据源配置

14930
来自专栏张善友的专栏

开源的读取Excel文件组件-ExcelDataReader

ExcelDataReader可以读取 Microsoft Excel 文件 ('97-2007),支持Windows  .Net Framework 2 +、...

29150
来自专栏跟着阿笨一起玩NET

C# TreeView使用技巧

代码中对事件参数e.Action的判断,可以避免在改变节点的Checked的状态时,再次进入AfterCheck(),这样当在AfterCheck()中有其他逻...

21520
来自专栏AhDung

【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)

------------------201508250915更新------------------

16720

扫码关注云+社区

领取腾讯云代金券