摘要
- 内存序列化 Parcelable比Serializable性能高
- Serializable在序列化时产生大量临时变量,容易GC
- Parcelable不支持磁盘序列化
Parcelable序列化的实现
import android.os.Parcel;
import android.os.Parcelable;
public class QuestionBean implements Parcelable {
public int AboutFAQID;
public String Question;
public String Answer;
public int Sorting;
public int Hit;
public int Flowers;
public int Eggs;
public QuestionBean(){}
protected QuestionBean(Parcel in) {
AboutFAQID = in.readInt();
Question = in.readString();
Answer = in.readString();
Sorting = in.readInt();
Hit = in.readInt();
Flowers = in.readInt();
Eggs = in.readInt();
}
//序列化
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(AboutFAQID);
dest.writeString(Question);
dest.writeString(Answer);
dest.writeInt(Sorting);
dest.writeInt(Hit);
dest.writeInt(Flowers);
dest.writeInt(Eggs);
}
//内容描述 只针对一些特殊的需要描述信息的对象,需要返回1,其他情况返回0就可以
@Override
public int describeContents() {
return 0;
}
//反序列化
public static final Creator<QuestionBean> CREATOR = new Creator<QuestionBean>() {
@Override
public QuestionBean createFromParcel(Parcel in) {
return new QuestionBean(in);
}
@Override
public QuestionBean[] newArray(int size) {
return new QuestionBean[size];
}
};
}