1. Parcelable 接口
Interface for classes whose instances can be written to and restored from
a Parcel。 Classes implementing the Parcelable interface must also have
a static field called CREATOR, which is an object implementing the
Parcelable.Creator interface。
2.实现 Parcelable 就是为了进行序列化,那么,为什么要序列化?
1)永久性保存对象,保存对象的字节序列到本地文件中;
2)通过序列化对象在网络中传递对象;
3)通过序列化在进程间传递对象。
3.实现序列化的方法
Android 中实现序列化有两个选择:一是实现 Serializable 接口(是 JavaSE 本身
就支持的),一是实现 Parcelable 接口(是 Android 特有功能,效率比实现
Serializable 接口高效,可用于 Intent 数据传递,也可以用于进程间通信
(IPC))。实现 Serializable 接口非常简单,声明一下就可以了,而实现
Parcelable 接口稍微复杂一些,但效率更高,推荐用这种方法提高性能。
注:Android 中 Intent 传递对象有两种方法:一是
Bundle.putSerializable(Key,Object),另一种是
Bundle.putParcelable(Key,Object)。当然这些 Object 是有一定的条件的,前
者是实现了 Serializable 接口,而后者是实现了 Parcelable 接口。
4.选择序列化方法的原则
1)在使用内存的时候,Parcelable 比 Serializable 性能高,所以推荐使用
Parcelable。
2)Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的 GC。
3)Parcelable 不能使用在要将数据存储在磁盘上的情况,因为 Parcelable 不能
很好的保证数据的持续性在外界有变化的情况下。尽管 Serializable 效率低点,但
此时还是建议使用 Serializable 。
5.应用场景
需要在多个部件(Activity 或 Service)之间通过 Intent 传递一些数据,简单类型
(如:数字、字符串)的可以直接放入 Intent。复杂类型必须实现 Parcelable 接
口。
6、Parcelable 接口定义
public interface Parcelable
{
//内容描述接口,基本不用管
public int describeContents();
评论0