首页
学习
活动
专区
圈层
工具
发布

Android 序列化 Serializable与Parcelable

实现Parcelable接口 由于Serializable在内存序列化上开销比较大,而内存资源属于android系统中的稀有资源(android系统分配给每个应用的内存开销都是有限的),为此android...而Android的Parcelable的设计初衷是由于Serializable效率过低,消耗大,而android中数据传递主要是在内存环境中(内存属于android中的稀有资源),因此Parcelable...大多数情况下使用Serializable也是没什么问题的,但是针对Android应用程序在内存间数据传输还是建议大家使用Parcelable方式实现序列化,毕竟性能好很多,其实也没多麻烦。...Parcelable也不是不可以在网络中传输,只不过实现和操作过程过于麻烦并且为了防止android版本不同而导致Parcelable可能不同的情况,因此在序列化到存储设备或者网络传输方面还是尽量选择Serializable...我们只需要打开Setting,找到plugin插件,然后搜索Parcelable插件,最后找到android Parcelable code generator 安装即可。

2.4K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android中的序列化:Parcelable和Serializable

    Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过...性能比较 在内存的使用中,Parcelable的性能方面要强于Serializable; Serializable序列化操作的时候会产生大量的临时变量(原因是使用了反射机制),从而导致GC的频繁调用,因而性能比...在内存上的开销比较小,因此内存直接进行数据传递的时候,Android推荐使用Parcelable; 在读写数据的时候,Parcelable是在内存中直接进行读写,而Serializable是通过IO流的形式将数据写入到硬盘上...,所以在需要保存或网络传输数据时选择Serializable,因为Android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化。.../reference/java/io/Serializable https://developer.android.com/reference/android/os/Parcelable https:/

    1.1K10

    【Android】Serializable和Parcelable序列化对象:传递自定义类数据

    三三要成为安卓糕手 一:Serializable序列化 1:提出问题 && 解决思路 提问:我们现在想传输的数据是一个类怎么办 思路:putExtra方法形参中不能传递自定义类, ①改造我们自己创建的类...getSerializableExtra 双参数的,需要版本在29以上,为了兼顾老版本,优先使用单参数方式 getSerializableExtra(String name, Class clazz) :这是 Android...二:Parcelable打包数据 想要让数据传输中性能更好,Android中专门诞生了一个接口Parcelable(包是安卓下的) 顾名思义parcelable 翻译为 “可打包的” (用于跨进程传输...) 1:实现Parcelable接口重写方法 public class Student implements Parcelable { private static final String TAG...的 “约定玩法” 官方 / 社区习惯上,会给 Parcelable 类专门写一个 protected 或 public 的构造函数,参数是 Parcel,专门用来接收数据,用于反序列化,为对象的成员变量赋值

    35610

    Android开发笔记(二十七)对象序列化

    Parcelable Parcelable的设计初衷,便是因为Serializable方式较耗资源且执行速度偏慢,为此Android设计了Parcelable用于组件之间的消息传递(包括线程间传递与进程间传递...采用Parcelable方式的类,需要自己定义如何打包(写数据)和解包(读数据),其余的序列化操作则由底层实现。...(读数据)和newArray describeContents : 返回0即可 序列化对象的消息传递 下面是Serializable和Parcelable两种方式在Activity之间传递消息的代码例子...对象代码 import android.os.Parcel; import android.os.Parcelable; public class ParData implements Parcelable...SerData ser = (SerData) bundle.getSerializable("ser"); String desc = String.format("您输入的人物信息是:姓名%s,

    83640

    彻底理解Serializable和Parcelable

    Serializable和Parcelable, 都可以用来做序列化,网上也有很多文章分析它们的优缺点,大部分的结论都是Serializable使用简单但是低效,Parcelable使用麻烦但是高效,...什么是序列化和反序列化,为什么需要序列化? Java中Serializable的序列化是怎么实现的? Android中Parcelable的序列化是怎么实现的? 有哪些使用场景,实现方式怎么选?...第三个问题:Android中Parcelable的序列化是怎么实现的?...Parcelable的速度是有一点优势的,但是Serializable的性能也不是不能接受,毕竟Android实际项目中,一般也不会有这么高的IO并发需求。...//HashMap.java transient NodeV>[] table; private void writeObject(java.io.ObjectOutputStream s)

    1.4K30

    Android点将台:外交官

    零、前言 1.本文的知识点 [1].Intent的简介及[隐式调用]和[显示调用] [2].对象的序列化与反序列化:[Parcelable(简)]和`Serializable] [3]....--android:authorities="本应用包名.fileProvider"--> android:name="android.support.v4.content.FileProvider...在进行反序列化时,JVM会把传来的字节流和当前类中的serialVersionUID进行对比, 是一致的则进行反序列化,否则抛序列化版本不一致的异常(InvalidCastException) 3.Parcelable...与Serializable的比较 此小点参考文章,讲得挺好 Parcelable 所属包android.os Serializable 所属包java.io |---所属包说明了Parcelable...只能在Android中使用 P以Ibinder作为信息载体的,在内存上的开销比较小,P在性能方面要强于S S在序列化操作的时候会产生大量的临时变量,(反射机制)从而导致GC的频繁调用 |---Parcelable

    43610

    Android Activity间传值选择,Serializable Or Parcelable

    前言:Activity就是Android世界的controller,它们构成了Android App里面的每一个页面,当然我们还会使用Fragment来将页面进一步划分,通过Fragment可以对特定业务模块的...而Parcelable是Android提供的接口,它主要是通过writeToParcel(),将需要持久化的字段保存到一个Parcel对象里面,然后通过CREATOR ?...最后我们来做一个总结,上面已经介绍了在Android开发中Serializable和Parcelable的用法,我们推荐使用Parcelable,理由大致有3个:1.Parcelable是Android...从序列化到传输到反序列化,平均要快10倍左右。...3.最后一个原因也是最重要的原因,Parcelable要序列化哪些字段,我们完全可以控制,而且还可以在其中加入各种转换,修饰,因为写接口暴露给我们了,我们可以自由定制,而Serializable就显的比较笨拙

    1.6K30

    Android开发之漫漫长途 X——Android序列化

    该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!...另外,本系列文章知识可能需要有一定Android开发基础和项目经验的同学才能更好理解,也就是说该系列文章面向的是Android中高级开发工程师。...那么本篇我们来讲一下Android序列化的相关知识。为什么跨度那么大,因为“任性”?...Android中的Parcelable 相对于Serializable而言,Parcelable的使用要复杂一些 public class Book implements Parcelable {...至此我们就得到了反序列化的对象 ---- 本篇总结 我们本篇详细分析了Android序列化相关知识,你可以使用Java中的Serializable也可以使用Parcelable。

    59220

    Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator                       Android Studi

    Android Studio 优秀插件系列: Android Studio 优秀插件(一):GsonFormat Android Studio 优秀插件(二): Parcelable Code Generator...,用于序列化对象的一个接口 不清楚的可以看一下这篇博客:Intent传递对象的两种方法 ---------------------------------------------------------...-------------------- 这里假设我们已经会使用 Parcelable 序列化一个对象了~~ 那么大家会发现 Parcelable 使用起来有些复杂,因为我们要自己复写 几个方法,而且当类的属性比较多的时候...那么因为 Parcelable 有使用它的优势,我们又不能放弃,那该怎么办么? Android Studio 提供给了我们 一个插件用来简化 给一个类 实现 Parcelable 接口的流程。...,会出现如下选择框,选择Parcelable 即可 ?

    1.8K80

    Android技能树 — 多进程相关小结

    Android技能书系列: Android基础知识 Android技能树 — 动画小结 Android技能树 — View小结 Android技能树 — Activity小结 Android技能树 —...在讲如何通信之前,我们可以先看下相关的基础,那就是序列化及反序列化。 我们看序列化有哪些: ? 我们可以看到,序列化一般主要是二个,那就是Serialzable和Parcelable。...因为反序列化会和序列化时候的serialVersionUID进行比较,如果不同,直接不进行反序列化了,就抛出异常。但是我们不手动写这个值,它会根据当前这个类结构去生成的hash值为值。...Parcelable public class User implements Parcelable { public int userId; public String userName...throws RemoteException { Log.v("dyp","接收到Activity的字符串:"+s); return "service传过去的字符串

    59810
    领券