Android中实现序列化有两种方式1.实现Serializable接口,2.实现Parcelable接口。其中一是Java的序列化接口,二是Android自带的序列化接口。
方式一实现序列化代码很简单,需要序列化的类只要实现接口。但是作为Intent和Bundle的参数的时候,还是Parcelable更方便。而且Serializable方式在序列化的过程中会产生大量临时变量。在页面间传递对象时推荐方式二。
方式二不能用于将对象存在于磁盘上的情况。
方式一实现序列化代码很简单,需要序列化的类只要实现接口。但是作为Intent和Bundle的参数的时候,还是Parcelable更方便。而且Serializable方式在序列化的过程中会产生大量临时变量。在页面间传递对象时推荐方式二。
方式二实现序列化的代码稍显复杂。
1.需要序列化的类需要实现Parcelable接口,并实现writeToParcel和describeContents方法。
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(infoId);
parcel.writeInt(infotype);
parcel.writeString(infotitle);
}
2.创建Parcelable.Creator<Info>(),并实现createFromParcel和newArray方法。
public static final Parcelable.Creator<Info> CREATOR = new Parcelable.Creator<Info>() {
@Override
public Info createFromParcel(Parcel parcel) {
return new Info(parcel);
}
@Override
public Info[] newArray(int i) {
return new Info[i];
}
};
public Info(Parcel parcel) {
infoId = parcel.readInt();
infotype = parcel.readInt();
infotitle = parcel.readString();
}
方式二不能用于将对象存在于磁盘上的情况。