参考:《第一行代码》
1、Serializable方式
Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储在本地,序列化的方法就是让一个类去实现Serializable这个接口
2、Parcelable方法
使用Parcelable也可以实现相同的效果,不过不同于将对象序列化,Parcelable方式的实现原理是将一个完整的对象分解,而分解后的每一部分都是Intent所支持的数据类型,这样也就实现传递对象的功能
public class Person implements Parcelable {
private String name;
private int age;
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(name);//写出name
dest.writeInt(age);//写出age
}
public static final Parcelable.Creator<Person> CREATOR=new Parcelable.Creator<Person>() {
@Override
public Person createFromParcel(Parcel arg0) {
Person person=new Person();
person.name=arg0.readString();//读取name
person.age=arg0.readInt();
return person;
}
@Override
public Person[] newArray(int size) {
// TODO Auto-generated method stub
return new Person[size];
}
};
}
1、实现Parcelable 接口,重写describeContents()和writeToParcel()方法,在writeToParcel()方法里面需要调用Parcel的writeX()方法将Person类的字段一一写出
2、创建Parcelable.Creator接口的实现,在里面createFromParcel方法读取刚刚写出的name和age字段,newArray()方法返回创建一个Person数组
Serializable的实现比较简单,因为它一次性把整个对象都进行序列化,效率会比Parcelable低,所以推荐使用Parcelable来实现Intent传递对象的功能