把对象生成为Parcel类型,以及如何利用Parcel来传递Enum类型数据

来源:互联网 发布:oracle dblink mysql 编辑:程序博客网 时间:2024/05/23 02:05
public class Settings implements Parcelable {    private static final String TAG = "Settings";    private Command mCommand;    private DataPattern mDataPattern;    private int mPredefinedData;    private byte[] mCustomizedData;    private String mFilePath;    private int mBlockSize;    private int mBlockCount;    private static Settings sInstance = new Settings();    private Settings() {        //default values        mCommand = Command.COMMAND_TPUT;        mDataPattern = DataPattern.RANDOM;        mBlockSize = 512;        mBlockCount = 1;    }    public static Settings getInstance() {        return sInstance;    }    private Settings(Parcel in) {        readFromParcel(in);    }    public enum Command {        COMMAND_NOP,                /* no operation */        COMMAND_TPUT,        COMMAND_ECHO,        COMMAND_LOOPBACK    }    public enum DataPattern {        File,        RANDOM,        PREDEFINED,        CUSTOMIZED    }    public static final int[] sPredefined_Datas = new int[]{            0XAA55,            0XFFFF,            0XBBEE,            0XBEAF    };    public void setCommand(Command command) {        mCommand = command;    }    public Command getCommand() {        return mCommand;    }    public void setDataPattern(DataPattern dataPattern) {        mDataPattern = dataPattern;    }    public DataPattern getDataPattern() {        return mDataPattern;    }    public void setPredefinedData(int pedefinedData) {        mPredefinedData = pedefinedData;    }    public int getPredefinedData() {        return mPredefinedData;    }    public void setCustomizedData(byte[] customizedData) {        mCustomizedData = customizedData;    }    public byte[] getCustomizedData() {        return mCustomizedData;    }    public void setFilePath(String filePath) {        mFilePath = filePath;    }    public String getFilePath() {        return mFilePath;    }    public void setBlockSize(int blockSize) {        mBlockSize = blockSize;    }    public int getBlockSize() {        return mBlockSize;    }    public void setBlockCount(int blockCount) {        mBlockCount = blockCount;    }    public int getBlockCount() {        return mBlockCount;    }    @Override // Parcelable    public int describeContents() { return 0; }    @Override // Parcelable    public void writeToParcel(Parcel out, int flags) {        out.writeInt(mCommand.ordinal());        out.writeInt(mDataPattern.ordinal());        out.writeInt(mPredefinedData);        out.writeByteArray(mCustomizedData);        out.writeString(mFilePath);        out.writeInt(mBlockSize);        out.writeInt(mBlockCount);    }    public void readFromParcel(Parcel in) {        mCommand = Command.values()[in.readInt()];        mDataPattern = DataPattern.values()[in.readInt()];        mPredefinedData = in.readInt();        in.readByteArray(mCustomizedData);        mFilePath = in.readString();        mBlockSize = in.readInt();        mBlockCount = in.readInt();    }    public static final Parcelable.Creator<Settings> CREATOR = new Parcelable.Creator<Settings>() {        @Override        public Settings createFromParcel(Parcel in) {            return new Settings(in);        }        @Override        public Settings[] newArray(int size) {            return new Settings[size];        }    };
0 0
原创粉丝点击