Parcelable和Serializable都能进行序列化 但Serializable消耗内存较高 有时使用Parcelable会更好
现在我的实现如下:
一、我的字段:( 加入无参构造方法为了json解析调用,并且生成了get/set方法)
// 标题
private String promotionTitle;
// 介绍
private String promotionContent;
// 代号
private String promotionCode;
// 图片链接
private String promotionPhoto;
//无参构造方法
public Concessions() {
}
二、(区别在这里Serializable直接实现接口就可以了)
Parcelable实现接口需要重写方法 describeContents()和 writeToParcel(Parcel dest, int flags)
蓝色标记处CREATOR 必须大写
如下代码:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(promotionTitle);
dest.writeString(promotionContent);
dest.writeString(promotionCode);
dest.writeString(promotionPhoto);
}
public static final Parcelable.Creator<Concessions> CREATOR= new Parcelable.Creator<Concessions>() {
public Concessions createFromParcel(Parcel in) {
return new Concessions(in);
}
public Concessions[] newArray(int size) {
return new Concessions[size];
}
};
private Concessions(Parcel in) {
promotionTitle = in.readString();
promotionContent = in.readString();
promotionCode = in.readString();
promotionPhoto = in.readString();
}
下面是序列化后完整类:
<pre name="code" class="java">public class Concessions implements Parcelable {
// 标题
private String promotionTitle;
// 介绍
private String promotionContent;
// 代号
private String promotionCode;
// 图片链接
private String promotionPhoto;
// 无参构造
public Concessions() {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(promotionTitle);
dest.writeString(promotionContent);
dest.writeString(promotionCode);
dest.writeString(promotionPhoto);
}
public static final Parcelable.Creator<Concessions> CREATOR = new Parcelable.Creator<Concessions>() {
public Concessions createFromParcel(Parcel in) {
return new Concessions(in);
}
public Concessions[] newArray(int size) {
return new Concessions[size];
}
};
private Concessions(Parcel in) {
promotionTitle = in.readString();
promotionContent = in.readString();
promotionCode = in.readString();
promotionPhoto = in.readString();
}
//get/set省略
}