Android序列化相关
来源:互联网 发布:cobol工资高还是java 编辑:程序博客网 时间:2024/05/21 17:15
1.serializable序列化与反序列化
serializable是java提供的序列化的机制,实现起来真的他妈有点方便:只要实现serializable接口就可以了。
(1)一个类实现了serializable接口,但是它的父类并没有实现serializable接口,那么父类里的成员变量是不会被序列化到本地的。
一个类中有一个类的对象,而而这个类并没有实现serializable接口,那么这个类的对象也是不会被序列化到本地的。这里需要提醒的一点,java还提供了一个关键字(transient)来限制成员变量的序列化。
(2)我们在实现序列话接口的,eclipse总会提醒我们能要生成一个成员变量serialVersionUID,好像这个变量有没有并不影响我们序列化这个类,确实一般来说是无关大雅的。这个变量主要是为了记录我们序列化或者反序列化的时候的版本信息。打个比方吧,你已经写好了一个类,而且已经序列化到本地了,这个时候你为这个类新添加了成员变量,在这个时候需要序列化或者反序列化如果没有这个serialVersionUID变量,那系统就会认为这是一个新的类,对它进行重新的序列化。
2.parcelable
parcelable是android提供的一种机制,从严格意义上来讲,parcelable应该谈不上序列化和反序列化,它是android提供用来ipc间传递的。
(1)parcelable实现上来说相对会比较复杂一点,需要实现三个方法:describeContents,writeToParcel,Creator
下面给一个具体的实现的例子
3serializable和parcelable的区别
(1)serializable主要是用于数据的持久化存储,而parcelable主要用于ipc间数据传递,不太适合于永久存储。
(2)从序列化和反序列化的速度上讲,国外有人做过测试,parcelable要比serializable快10倍。这里需要提醒的是serializable序列化的速度真的是不咋地。
serializable是java提供的序列化的机制,实现起来真的他妈有点方便:只要实现serializable接口就可以了。
(1)一个类实现了serializable接口,但是它的父类并没有实现serializable接口,那么父类里的成员变量是不会被序列化到本地的。
一个类中有一个类的对象,而而这个类并没有实现serializable接口,那么这个类的对象也是不会被序列化到本地的。这里需要提醒的一点,java还提供了一个关键字(transient)来限制成员变量的序列化。
(2)我们在实现序列话接口的,eclipse总会提醒我们能要生成一个成员变量serialVersionUID,好像这个变量有没有并不影响我们序列化这个类,确实一般来说是无关大雅的。这个变量主要是为了记录我们序列化或者反序列化的时候的版本信息。打个比方吧,你已经写好了一个类,而且已经序列化到本地了,这个时候你为这个类新添加了成员变量,在这个时候需要序列化或者反序列化如果没有这个serialVersionUID变量,那系统就会认为这是一个新的类,对它进行重新的序列化。
2.parcelable
parcelable是android提供的一种机制,从严格意义上来讲,parcelable应该谈不上序列化和反序列化,它是android提供用来ipc间传递的。
(1)parcelable实现上来说相对会比较复杂一点,需要实现三个方法:describeContents,writeToParcel,Creator
下面给一个具体的实现的例子
public class TestParcelable implements Parcelable { private String name; private int age; private int gender; public TestParcelable(Parcel arg0) { // TODO Auto-generated constructor stub this.name=arg0.readString(); this.age=arg0.readInt(); this.gender=arg0.readInt(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int arg1) { parcel.writeString(name); parcel.writeInt(age); parcel.writeInt(gender); } public static final Creator<TestParcelable> CREATOR=new Creator<TestParcelable>() { @Override public TestParcelable createFromParcel(Parcel arg0) { // TODO Auto-generated method stub return new TestParcelable(arg0); } @Override public TestParcelable[] newArray(int size) { // TODO Auto-generated method stub return new TestParcelable[size]; } };}
3serializable和parcelable的区别
(1)serializable主要是用于数据的持久化存储,而parcelable主要用于ipc间数据传递,不太适合于永久存储。
(2)从序列化和反序列化的速度上讲,国外有人做过测试,parcelable要比serializable快10倍。这里需要提醒的是serializable序列化的速度真的是不咋地。
0 0
- Android序列化相关
- java序列化 相关
- java序列化相关
- 序列化相关问题
- Java 序列化相关
- java 序列化相关
- 序列化相关文章转载
- Java序列化相关知识
- java序列化相关总结
- Java 序列化相关操作
- Jquery表单序列化相关
- 序列化的相关提问
- 序列相关
- java序列化的相关知识
- spark压缩和序列化相关
- java关键字transient与序列化相关
- Android bitmap序列化
- Android中序列化
- 16年暑期瞎补CF计划
- java网络编程之InetAddress
- map与set的使用
- 移动前端开发之viewport的深入理解
- 计算机等级考试资料
- Android序列化相关
- 设计模式之单例模式
- Scala 闭包(闭包是一个函数)
- Eclipse设置jdk版本AND配置JDK环境教程
- Android 设置dialog背景全透明无边框
- POJ 多项式加法
- MATLAB的solve函数
- 一次关于Netty+Gson造成内存泄露 Memory Analysis分析
- 002——DispatchAction的应用