序列化之Parcelable和Serializable

225 阅读1分钟

摘要

  • 内存序列化 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];
		}
	};
}