Android系统中Parcelable和Serializable的区别

本文深入探讨了Android开发中对象序列化的两种方式:Serializable与Parcelable。分析了这两种序列化方式的特点及适用场景,并提供了实现序列化的具体步骤。

进行Android开发的时候,我们都知道不能将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。

通过Android的API,我们知道有两种选择,即在传递对象时,需要对我们的对象进行 Parcelable 或者Serializable化。作为Java开发者,相信大家对Serializable 机制有一定了解,那为什么还需要 Parcelable呢?

为了回答这个问题,让我们分别几个方面进行展开

什么是序列化

序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。

为什么要进行序列化

  • 为了永久性保存对象,保存对象的字节序列到本地文件中
  • 通过序列化对象在网络中传输
  • 通过序列化在进程间传递

怎样进行序列化

  • 实现Serializable接口
  • 实现Parcelable接口

两种序列化的区别

Serializable序列化

  • JavaSE本身就支持
  • Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC
  • Serializable接口非常简单,声明一下就可以了
  • 如果将数据存储到磁盘,尽管Serializable效率低点,但此时还是建议使用Serializable 。

Parcelable序列化

  • Android特有功能
  • 效率比实现Serializable接口高效
  • 实现Parcelable接口稍微复杂一些,但效率更高
  • Parcelable不能使用在要将数据存储在磁盘上的情况

序列化的实现

Serializable序列化实现

  • 安装插件

    serializable插件

  • 使用插件

    使用插件

Parcelable序列化实现

  • 安装插件

    安装插件

  • 使用插件

    使用插件

参考:
Android系统中Parcelable和Serializable的区别
Android中Parcelable接口用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值