【Android学习】Serializable和Parcelable
来源:互联网 发布:淘宝咨询电话是多少 编辑:程序博客网 时间:2024/06/04 01:12
1,Serializable
1)概念
Serializable接口:完成对象的序列化过程,提供标准的反序列化和序列化操作。
序列化接口Serializable没有方法或字段,仅用于标识可序列化的语义。
2)场景
实现了Serializable接口的对象,可将它们转换成一系列字节,并可在以后完全恢复回原来的样子。这一过程亦可通过网络进行。这意味着序列化机制能自动补偿操作系统间的差异。
Serializable将java对象序列化为二进制文件。
3)实现
①序列化
A.实现Serializable接口;
B.在类中声明如下标识:
private static final long serialVersionUID = 1L;
在反序列化的时候,这个标识和当前类版本相同,才可成功反序列化。
②读写
被序列化的类需要实现Serializable接口,使用ObjectInputStream和ObjectOutputStream进行对象的读写。
4)不能序列化的对象
①静态成员
静态成员变量属于类不属于对象。
② transient标记
被transient关键字标记的成员变量。
5)举例
①String实现了Serializable。
②File实现了Serializable。
2,Parcelable
1)概念
Parcelable接口同样提供对象的序列化过程。
Parcel被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。
3,Serializable、Parcelable对比
1)Parcelable
实现了Parcelable对象存放在内存中。
实现麻烦,效率高,主要用于内存序列化。
Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
在使用内存的时候,Parcelable比Serializable性能高。
2)Serializable
实现了Serializable对象存放在本地文件中。
用于将对象序列化到存储设备、将对象序列化后通过网络传输。
Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable 。
4,应用
1)Intent传递
2)类的序列化
被序列化的类需要实现Serializable接口,使用ObjectInputStream和ObjectOutputStream进行对象的读写。
未实现此接口的类无法进行任何状态的序列化和反序列化。
类通过实现 java.io.Serializable 接口以启用其序列化功能。
3)场景
2,Parcelable
Parcel被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。
- 【Android学习】Serializable和Parcelable
- android: Serializable 和 Parcelable
- 【Android】Serializable和Parcelable
- [android] Serializable 和 Parcelable 区别
- android---- Serializable 和 Parcelable 区别
- android---- Serializable 和 Parcelable 区别
- [android] Serializable 和 Parcelable 区别
- [android] Serializable 和 Parcelable 区别
- [android] Serializable 和 Parcelable 区别
- [android] Serializable 和 Parcelable 区别
- [android] Serializable 和 Parcelable 区别
- [android] Serializable 和 Parcelable 区别
- [android] Serializable 和 Parcelable 区别
- Android中 Parcelable和Serializable
- Android Parcelable和Serializable区别
- android---- Serializable 和 Parcelable 区别
- Android中的Serializable和Parcelable
- Android中的Serializable和Parcelable
- 梯度下降(Gradient Descent)小结
- '好'在英语中使用的几种方式
- CentOS安装MySQL 5.7.9
- ios GCD 详解
- Android开发Parcelable使用详解
- 【Android学习】Serializable和Parcelable
- 浅析CDN工作机制
- 自定义view控件效果实现及实践
- usb hid通信 STM32
- 常见的测试工具
- JS中的phototype JS的三种方法(类方法、对象方法、原型方法)
- Windows10 安装robotframework教程及相关问题
- redis.conf Redis配置文件详解 步骤攻略
- 简单web api跨域调用案例