序列化:Serializable、Externalizable、Parcelable

来源:互联网 发布:淘宝信用贷款怎么审查 编辑:程序博客网 时间:2024/05/16 18:46

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

0 0
原创粉丝点击