序列化就是可以把对象存储在本地文件,把数据可以在网络中传输,也可以在IPC机制中传递。android中可以使用二种序列化,实现Serializable和实现Parcelable接口。
Serializable是JAVA中提供的系列化接口,在需要实现的类中实现接口,实现它后自动会做序列化操作。这种方式的缺点是
使用的反射序列化过程比较慢,在序列化过程会创建很多临时变量,容易触发GC。
Parcelable 速度快是android自己提供的序列化接口。据 google 工程师的说法,这些代码将会运行地特别快。原因之一就是我们已经清楚地知道了序列化的过程,而不需要使用反射来推断。同时为了更快地进行序列化,对象的代码也需要高度优化
接口的使用
public interface Parcelable {
//内容描述接口,基本不用管
public int describeContents();
//写入接口函数,打包
public void writeToParcel(Parcel dest, int flags);
//读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入。
//为了能够实现模板参数的传入,这里定义Creator嵌入接口,内含两个接口函数分别返回单个和多个继承类实例。
public interface Creator<T> {
public T createFromParcel(Parcel source);
public T[] newArray(int size);
}
http://www.cnblogs.com/hpboy/archive/2012/07/12/2587797.html
总结
尽量用Parcelable ,因为这将会为你对象的序列化过程快10多倍,而且占用较少的资源。如果要将对象存储本地就要用serialization,因为尽量用Parcelable是为了数据传递而设计的。但是大多数情况下,Serializable的龟速不会太引人注目。你想偷点懒就用它吧,不过要记得serialization是一个比较耗资源的操作,尽量少使用。