一、Parcelable的基本介绍

Parcelable是Android为我们提供的序列化接口。一个类只要实现了这个接口,这个类的对象就可以实现序列化。可用于IPC/Binder,Activity之间的对象的传递。

二、Parcelable的基本使用

1、创建一个类实现Parcelable接口

2、实现接口中的describeContents()和writeToParcel(Parcel dest, int flags)方法

3、在类的实现中必须包含一个非空的静态实现了Parcelable.Creator接口的CREATOR。

示例如下:

public class User implements Parcelable {    private String name;    private int age;    public User(String name, int age) {        this.name = name;        this.age = age;    }//此处读的顺序要和 writeToParcel(Parcel dest, int flags)的写入顺序保持一致,否则会导致读取的数据出错    private User(Parcel in) {        name = in.readString();        age = in.readInt();    }    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(name);        dest.writeInt(age);    }    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {        @Override        public User createFromParcel(Parcel source) {            return new User(source);        }        @Override        public User[] newArray(int size) {            return new User[size];        }    };}

三、Parcelable中方法的介绍

1、describeContents()

返回当前对象的内容描述。返回值为0或者CONTENTS_FILE_DESCRIPTOR(即1),如果writeToParcel(Parcel dest, int flags)的输出包含文件描述符,则返回1,否则返回0,几乎所有的情况之下都是返回0.

2、writeToParcel (Parcel dest, int flags)

将当前的对象写入序列化结构中,dest表示需要写入序列化的对象。flags有两种值0和PARCELABLE_WRITE_RETURN_VALUE(即1),几乎所有的情况下都是0.

3、createFromParcel(Parcel source)

返回Parcelable类的新实例。同Parcel的readXXX()方法来完成反序列化的过程。

4、newArray(int size)

创建Parcelable类的新数组。其中每个条目都初始化为空。供外部类反序列化本类数组使用。

注意:如果在该类的内部包含有里一个可序列化的对象,则该对象的的反序列化过程需要传递当前线程的上下文类加载器。否则会返回BadParcelableException错误。

更多相关文章

  1. Android(安卓)ORMLite数据库框架使用入门
  2. Android序列化 Serializable使用和Parcelable 插件化使用 以及两
  3. android--------service
  4. Message Looper Handler三者之间的关联
  5. android(NDK+JNI)---JNI全面解析
  6. android 中Bitmap 和 Drawable互换
  7. Android在广播接收器里启动活动和弹出对话框
  8. Android游戏开发(一)
  9. Android(安卓)回调机制举例及个人理解

随机推荐

  1. Android(安卓)- 设定更改主Activity
  2. Android中base64加密后的字符串带有“\n
  3. android 下拉列表(Spinner)的学习与应用
  4. Android运行过程中一点小问题
  5. android短信拦截
  6. Android中添加布局和初始化布局总结
  7. android取得账户(邮件地址)
  8. android IOC框架学习记录
  9. Android常用的工具类
  10. ubuntu10.04上android环境安装 “org.ecl