您的位置:首页 > 其它

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

2016-05-12 10:21 543 查看
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];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: