您的位置:首页 > 移动开发 > Android开发

Android中的两种序列化方式

2017-11-12 14:23 671 查看
1.Serializable,官方文档给出这种说明

类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。

实现这种序列化比较简单,直接实现Serializable接口就行,看代码

/**
*
*/
package com.fangzhiyeu.dev;

import java.io.Serializable;

import javax.lang.model.element.Parameterizable;

/**
* @author fang
*
*/
public class Demo1 implements Serializable{

String name;
int size;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}

}


让JavaBean直接实现Serializable的接口就行

2.Parcelable序列化,实现Parcelable序列化较为麻烦

2.1首先需要实现:writeToParcel和readFromPacel方法

2.2接着需要在:该类中添加一个名为CREATOR的static final属性

改属性需要实现:android.os.Parcelable.Creator接口

2.3再接着需要从写接口中的两个方法:

createFromParcel(Parcel source)方法:实现从source创建出JavaBean实例的功能

,这种序列化使用AS非常简单,

package com.example.myapplication;

import android.os.Parcel;
import android.os.Parcelable;

/**
* Created by fang on 2017/11/12.
*/

public class Demo implements Parcelable {

String name;
int Size;

protected Demo(Parcel in) {
name= in.readString();
Size=in.readInt();
}
public static final Creator<Demo> CREATOR = new Creator<Demo>() {
@Override
public Demo createFromParcel(Parcel in) {
return new Demo(in);
}
@Override
public Demo[] newArray(int size) {
return new Demo[size];
}
};
@Override
public int describeContents() {
return 0;//默认返回O
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(Size);
dest.writeString(name);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: