Parcelable的使用
一、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.CreatorCREATOR = 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错误。
更多相关文章
- Android(安卓)ORMLite数据库框架使用入门
- Android序列化 Serializable使用和Parcelable 插件化使用 以及两
- android--------service
- Message Looper Handler三者之间的关联
- android(NDK+JNI)---JNI全面解析
- android 中Bitmap 和 Drawable互换
- Android在广播接收器里启动活动和弹出对话框
- Android游戏开发(一)
- Android(安卓)回调机制举例及个人理解