当使用对象在进程间传输数据时,我们需要对对象进行序列化,Java中提供了Serializable接口,而Android SDK提供了Parcelable接口
public class User implements Serializable
或者public class User implements Parcelable
究竟如何选择呢?为什么Android要提供专门的序列化方式?
Serializable的作用是将数据对象存入字节流当中,在需要时重新生成对象,主要应用是利用外部存储设备保存对象状态,以便网络传输等。
针对Android这种内存受限的移动设备,对于性能要求更高,特别是Android IPC机制的实现上,要求一种更快的数据传输方式。所以,Parcel类被提上来,就是为了在Android中进行更为高效的序列化和操作,所以在内存间进行数据传输时推荐使用Parcelable,例如Activity间的数据传输。
关于Parcelable的实现方式举例:
public class Book implements Parcelable {
public int bookId;
public String bookName;
public Book(int bookId, String bookName) {
super();
this.bookId = bookId;
this.bookName = bookName;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(bookId);
out.writeString(bookName);
}
public static final Parcelable.Creator<Book> CREATOR = new Parcelable.Creator<Book>() {
@Override
public Book createFromParcel(Parcel source) {
return new Book(source);
}
@Override
public Book[] newArray(int size) {
return new Book[size];
}
};
private Book(Parcel source) {
bookId = source.readInt();
bookName = source.readString();
}
}