Serializable和Parcelable

1、概念

  • 对象的序列化:把Java对象转换为字节序列并存储至一个储存媒介的过程;
  • 对象的反序列化:把字节序列恢复为Java对象的过程;

2、序列化的详细解释

对象的序列化涉及三个点关键点:Java对象、字节序列、存储。

  1. Java对象的组成
    Java对象包含变量与方法。但是序列与反序列化仅处理Java变量而不处理方法,序列与反序列化仅对数据进行处理。
  2. 字符序列
    字符序列是两个词,字符是在计算机和电信领域中,字符(Character)是一个信息单位。数学上,序列是被排成一列的对象(或事件)。通俗一点说就是连续排列的多个字符的集合。类似于"1A165613246546" 。
  3. 存储
    字符序列需要保存到一个地方,可以是硬盘也可以是内存。简单说法是:序列化把当前对象信息保存下来。反序列化刚好相反的操作。

3、Java对象与Java对象序列化的区别

Java对象存在的前提必须在JVM运行期间存在,如果想在JVM非运行的情况下或者在其他机器JVM上获取指定Java对象,在现有Java对象的机制下都不可能完成。 与Java对象不同的是,如果对Java对象执行序列化操作,因为原理是把Java对象信息保存到存储媒介,所以可以在以上Java对象不可能存在的两种情况下依然可以使用Java对象。那为什么需要把对象信息保存到存储媒介中并之后读取出来? 因为开发中有在JVM非运行的情况下或者在其他机器JVM上获取指定Java对象的需求

4、Android中Serializable与Parcelable区别

两种都是用于支持序列化、反序列化话操作,两者最大的区别在于存储媒介的不同,Serializable使用IO读写存储在硬盘上,而Parcelable是直接在内存中读写,很明显内存的读写速度通常大于IO读写,所以在Android中通常优先选择Parcelable。

5、深入Parcelable

Parcel是一种轻量级的高效的对象序列化和反序列化机制。整个读写全是在内存中进行,主要是通过malloc()、realloc()、memcpy()等内存操作进行,所以效率比JAVA序列化中使用外部存储器会高很多;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、简介: android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serial...
    万户猴阅读 3,233评论 0 4
  • 自己开发Android也有些时间了,Serializable和Parcelable遇到过不止一次了。但是每次别人问...
    静默加载阅读 5,019评论 0 4
  • 本文出自 “阿敏其人” 简书博客,转载或引用请注明出处。 一、android为什么要序列化?什么是序列化,怎么进行...
    阿敏其人阅读 44,733评论 20 100
  • 第一章 为爱入凡尘 仙灵阁里两道身影!一黑一白!白色身影追赶着黑色身影!激斗了一会!两道身影都停了下来!...
    兮颜123123阅读 1,020评论 0 0
  • 冬天, 野地里 开着春天的 小黄花 像星星 像梦的眼睛 轻轻地走过你 仿佛走过了四季 我的心里也藏着梦 不是春天的...
    薇薇安的30天阅读 818评论 0 1