Parcelable接口介绍与使用

1. Parcelable接口

Parcelable的实例可以被写入和恢复一个 Parcel类。一个类实现Parcelable接口也必须有一个公开的静态的常态的字段CREATOR,这是实现 Parcelable.Creator 的对象。

实现Parcelable案例:

public class Student implements Parcelable {

	private String name;// 你要序列化的数据
	private int age;// 你要序列化的数据

	public Student() {
	}

	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	// get和set方法,略
	// ...

	<span style="color:#ff9966;">// 注意修饰符public static final都必须要有,名字CREATOR也是固定的,不能改成小写或其他名字</span>
	public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() {
		@Override
		public Student createFromParcel(Parcel in) {
			return new Student(in);
		}

		@Override
		public Student[] newArray(int size) {
			return new Student[size];
		}
	};

	// 注意这个构造方法是私有的
	private Student(Parcel in) {
		<span style="color:#ff9966;">// 数据读取的顺序要和写入时保持一致</span>
		name = in.readString();
		age = in.readInt();
	}

	// 描叙内容,不用管
	@Override
	public int describeContents() {
		return 0;
	}

	<span style="color:#ff9966;">// 将数据写入Parcel中,Parcel对象似于一个双向流,既可以写入又可以读取</span>
	@Override
	public void writeToParcel(Parcel out, int flags) {
		out.writeString(name);
		out.writeInt(age);
	}
}


Parcelable是一种类似于Serializable的序列化接口,效率比Serializable略高效,但不能使用Parcelable将数据存储在磁盘上,而只能序列化到内存中(只能代替DataOutputStream和DataInputStream),因为Parcelable不能很好的保证数据的持续性,所以Parcelable主要用于Intent数据传递,也可以用于进程间通信。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值