1、
public interface Serializable {
}
实现Serializable的类,可以实现(参考java api):
private void writeObject(java.io.ObjectOutputStream out) throws IOException
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;
private void readObjectNoData() throws ObjectStreamException;
=>TODO:具体实现原理使用了反射机制
2、
public interface Externalizable extends java.io.Serializable {
void writeExternal(ObjectOutput out) throws IOException;
void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
}
3、
public interface Parcelable {
......
public int describeContents();
public void writeToParcel(Parcel dest, int flags);
public interface Creator<T> {
public T createFromParcel(Parcel source);
public T[] newArray(int size);
}
public interface ClassLoaderCreator<T> extends Creator<T> {
public T createFromParcel(Parcel source, ClassLoader loader);
}
}
Java的Serializable的作用,为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的;
Android的Parcelable,设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,仅在内存中存在;
Parcelable是通过IBinder通信的消息的载体;
android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化;
=》TODO:原理
参考:
http://www.cnblogs.com/xdp-gacl/p/3777987.html
http://www.cnblogs.com/rollenholt/archive/2012/11/26/2789445.html
http://developer.51cto.com/art/201202/317181.htm
http://bluepopopo.iteye.com/blog/486548
http://www.cnblogs.com/trinea/archive/2012/11/09/2763213.html
http://www.2cto.com/kf/201403/288476.html
http://longdick.iteye.com/blog/458557