什么是序列化,为什么要进行序列化

答:对象要进行传输(如:activity 与activity间 ,网络间 进程间等等)、存储到本地就必须进行序列化 。

这种可传输的状态就是序列化。

怎么序列化??两种

1.Serializable (java 自带)

方法:对象继承 Serializable类即可实现序列化,就是这么简单,也是它最吸引我们的地方

2.Parcelable(Android专用):Parcelable方式的实现原理是将一个完整的对象进行分解,用起来比较麻烦,但我们有工具,还是很简单的具体如下

方法:1.继承 Parcelable

2、复写两个方法,分别是describeContents和writeToParcel

3、实例化静态内部对象CREATOR,实现接口Parcelable.Creator 。

说不如做,直接上图上代码

 
 

1-1

如何选择

选择序列化方法的原则

1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。

2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。

3)Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable 。

4)android上应该尽量采用Parcelable,效率至上,效率远高于Serializable

综上所述:对于我们Android开发者来说,最好的还是用Parcelable序列化,就是写起来挺费事,没事我们是程序员自然有高端的办法

Androidstudio 插件一键生成代码,实现Parcelable就是这么简单,图

setting  -- pugins --输入par即可出来该插件。安装后重启androidstudio

 
 

ok ,从此序列化就不担心了!

作者:ifjgm
链接:https://www.jianshu.com/p/1203ba41b0ac
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转 序列化Serializable和Parcelable的区别详解的更多相关文章

  1. 序列化Serializable和Parcelable

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录下序列化Serializable和Parcelable的使用方法. Android中Intent如果要传递类对象,可以通过两 ...

  2. 基于Java的打包jar、war、ear包的作用与区别详解

      本篇文章,小编为大家介绍,基于Java的打包jar.war.ear包的作用与区别详解.需要的朋友参考下   以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.cla ...

  3. Android中Intent传值与Bundle传值的区别详解

    Android中Intent传值与Bundle传值的区别详解 举个例子我现在要从A界面跳转到B界面或者C界面   这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两 ...

  4. php 去除html标记--strip_tags与htmlspecialchars的区别详解

    php 去除html标记--strip_tags与htmlspecialchars的区别详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-26   本篇文章是对php中去除html ...

  5. HTTP POST GET 本质区别详解

    HTTP POST GET 本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Ht ...

  6. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

  7. [转]ESCAPE()、ENCODEURI()、ENCODEURICOMPONENT()区别详解

    escape().encodeURI().encodeURIComponent()区别详解 JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encode ...

  8. phpcms加载系统类与加载应用类之区别详解

    <?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms ...

  9. Bind和Eval的区别详解

    原文:Bind和Eval的区别详解 1.简单描述Eval和Bind的区别 绑定表达式 <%# Eval("字段名") %> <%# Bind("字段名& ...

随机推荐

  1. 【代码更新】单细胞分析实录(21): 非负矩阵分解(NMF)的R代码实现,只需两步,啥图都有

    1. 起因 之前的代码(单细胞分析实录(17): 非负矩阵分解(NMF)代码演示)没有涉及到python语法,只有4个python命令行,就跟Linux下面的ls grep一样的.然鹅,有几个小伙伴不 ...

  2. VMware vSphere中三种磁盘:精简置备/厚置备置零/厚置备延迟置零

    VMware磁盘格式分类. 厚置备延迟置零.厚置备置零和精简置备1.厚置备延迟置零(zeroed thick) 以默认的厚格式创建虚拟磁盘.创建过程中为虚拟磁盘分配所需空间.创建时不会擦除物理设备上保 ...

  3. Redis核心原理与实践--事务实践与源码分析

    Redis支持事务机制,但Redis的事务机制与传统关系型数据库的事务机制并不相同. Redis事务的本质是一组命令的集合(命令队列).事务可以一次执行多个命令,并提供以下保证: (1)事务中的所有命 ...

  4. airflow 并发上不去

    airflow.cfg parallelism配置是否合适 任务池slot是否足够

  5. nohup、&、 2>&1详解

    前言 对一个程序员来说,java项目的打包部署也是一项必须掌握的一项技术任务,现我将自己平时在maven下打包以及部署项目总结,希望对有这方面诉求的小伙伴有所帮助! 一.maven项目打包及命令 (1 ...

  6. ES6基础知识(Reflect)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 菜鸡的Java笔记 第六 - java 方法

    前提:现在所讲解的方法定义格式,只属于JAVA 方法定义的其中一种组成方式.而完整的组成方式将随着学习逐步渗透. 1.方法的基本定义 方法(Method)在一些书中也会有人将其说是  函数(Funct ...

  8. php开发微信公众号(1)

    最近找了个方向提升自己的技术站,发现微信是一个不错的选择 1.入门 申请公众号这些都不说了,另外你必须需要php.h5.MySQL等基本知识才能看懂此文章,还需要有一个服务器及域名,由于我遇见问题也会 ...

  9. python实现图像直方图

    目录: (一)直方图的使用 正文: (一)直方图的使用 1 from matplotlib import pyplot as plt 2 def plot_demo(image): 3 print(i ...

  10. myeclipse与tomcat,运行jsp程序

    一.myeclipse中配置JRE 步骤: 1.选择window->preferences->Java->Installed JREs 2.点击窗口右边的"add" ...