一文看懂Android中的序列化

本文详细介绍了Android中的两种序列化方式——Serializable和Parcelable。Serializable接口简单但效率较低,适合存储和网络传输;Parcelable则高效但实现复杂,主要用于进程间通信。通过源码分析和实例解释,帮助开发者理解序列化及其在Android系统中的应用。
摘要由CSDN通过智能技术生成

序列化,刚入门的开发者可能从字面上看不出这个到底是啥意思,这比较妨碍我们的理解。所以我们需要铭记其定义和作用。
定义:

  • Java序列化就是指把Java对象转换为字节序列的过程
  • Java反序列化就是指把字节序列恢复为Java对象的过程。

作用:

  • 对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。
  • 通过序列化可以在进程间传递对象。
    从序列化的作用中我们可以看到字节流有利于网络传输或者存储文件,或者进行进程间通信传递对象。实际上,进程间传递对象,也可以理解为序列化的对象保存在了系统的内存中,然后传给另一个对象。由于不同的进程,拥有不同的jvm,所以才需要进行进程间通信,然而,序列化后的对象由于其可用存储为文件或者存在内存,所以可用与进程间通信。
    图1 序列化和反序列化过程 图1 序列化和反序列化过程

Android中总共有两种序列化方式,一个是Java提供的序列化接口Serializable,一个是Android提供的新的序列化方式Parcelable。

Serializable

首先,Java提供的Serialization接口是个空接口,如果一个对象需要序列化,可以实现Serialization接口,然后声明一个SerialVersionUID。

package java.io;

public interface Serializable {
   
}

因为是空接口,所以非常简单,看起来什么都不用做,实际上是系统帮助我们做了序列化的工作,相当于我这个对象标记为Serialization,系统JVM就知道这个类需要序列化。

public class Person implements Serializable {
   
    private static final long serialVersionUID = 1234567L;

    private int age;
    private String name;
    private boolean isMale;

然后,序列化和反序列化的代码为

//序列化
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(new File("person.txt")));
        os.writeObject(person);
        os.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值