首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

序列化v/s Parcelable Android

序列化(Serialization)和 Parcelable 是 Android 开发中用于对象持久化的两种方法。它们可以将对象的状态转换为可存储或传输的格式,并在需要时恢复对象的状态。

  1. 序列化(Serialization)

序列化是一种将对象的状态(包括其成员变量的值)转换为字节流的过程,以便可以将其存储在文件或内存中,或通过网络传输给其他设备。反序列化是将字节流恢复为对象的过程。

优势:

  • 通用性:序列化可以应用于任何对象,只需实现 java.io.Serializable 接口。
  • 易于实现:只需实现 java.io.Serializable 接口,无需编写额外的代码。

应用场景:

  • 将对象的状态保存到文件或数据库中。
  • 通过网络传输对象的状态。

推荐的腾讯云相关产品:腾讯云提供了对象存储(COS)和数据库服务(如 MySQL、MongoDB),可以用于存储和传输对象的状态。

产品介绍链接地址:

  1. Parcelable

Parcelable 是 Android 提供的一种对象序列化方式,主要用于在不同组件(如 Activity、Service)之间传递对象。

优势:

  • 性能:相比于序列化,Parcelable 的性能更好。
  • 安全性:Parcelable 可以控制序列化和反序列化的过程,避免不必要的数据泄露。

应用场景:

  • 在不同组件之间传递对象。
  • 将对象的状态保存到 Bundle 中。

推荐的腾讯云相关产品:腾讯云提供了云储存(COS)和数据库服务(如 MySQL、MongoDB),可以用于存储和传输对象的状态。

产品介绍链接地址:

总结:

  • 序列化是一种通用的对象持久化方式,适用于任何对象,但性能较差。
  • Parcelable 是 Android 提供的一种对象序列化方式,性能较好,适用于在不同组件之间传递对象。
  • 在选择序列化方式时,需要根据具体需求和性能要求进行选择。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 序列化 Serializable与Parcelable

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

2K60
  • 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:/

    73410

    Android序列化Parcelable和Serializable的使用详解

    实现序列化的必要条件 一个对象要实现序列化操作,该类就必须实现了Serializable接口或者Parcelable接口,其中Serializable接口是在java中的序列化抽象类,而Parcelable...接口则是android中特有的序列化接口,在某些情况下,Parcelable接口实现的序列化更为高效,关于它们的实现案例我们后续会分析,这里只要清楚知道实现序列化操作时必须实现Serializable接口或者...Parcelable和Serializable是两个接口,它们的作用是让实现了其中一个接口的类的对象能够被序列化和反序列化。...(2)Parcelable接口是Android平台下的序列化接口,通常跨进程传递的数据都要正确实现这个接口,比如Intent,Bitmap等。...Parcelable实现起来比Serializable复杂,但性能较好。使用场景:在内存中实现序列化,例如跨进程传递。

    1.6K10

    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

    62740

    AndroidParcelable的使用详解

    Parcelable与Serializable Serializable是Java为我们提供的一个标准化的序列化接口。 ParcelableAndroid为我们提供的序列化的接口。...3、Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable在外界有变化的情况下不能很好的保证数据的持续性。...序列化与反序列化 序列化:将对象转换为可以传输的二进制流(二进制序列)的过程,这样我们就可以通过序列化,转化为可以在网络传输或者保存到本地的流(序列),从而进行传输数据 。...package com.status.mattest; import android.os.Parcel; import android.os.Parcelable; public class Book...: textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v)

    1.9K50

    彻底理解Serializable和Parcelable

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

    1.1K30

    Android点将台:外交官

    零、前言 1.本文的知识点 [1].Intent的简介及[隐式调用]和[显示调用] [2].对象的序列化与反序列化:[Parcelable(简)]和`Serializable] [3]....--android:authorities="本应用包名.fileProvider"--> <provider 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

    16110

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

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

    36520
    领券