把对象生成为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]; } };
相关文章推荐
- 自定义控件——可拖拽排序的ListView
- linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent_helper
- 使用spring @Scheduled注解执行定时任务
- SCP 命令
- Unix 复制文件至指定目录
- [转]C#操作注册表
- tomcat在编译jsp时报错java.lang.OutOfMemoryError: PermGen space及其解决方法 .
- Android fill_parent、wrap_content和match_parent的区别
- 解决本地多个ssh key问题
- INSERT INTO t_inertupdate (a,c) VALUES(15,a*2);
- Hbase 0.98.3 & 1.1.3 balance理解
- 无状态服务 VS 有状态服务
- 【Linux】makefile文件编写
- Linux(Ubuntu)下如何安装JDK
- 关于存储的基本知识点理解
- JavaScript—requestAnimationFrame
- 获取系统当前时间
- jQuery中读取json文件
- 面向对象的tab选项卡实现
- Python下划线与命名规范