实现Parcelable接口就是为了进行序列化,为什么需要序列化? 1)永久性保存对象,保存对象的字节序列到本地文件中; 2)通过序列化对象在网络中传递对象 3)通过序列化在进程间传递对象 Android在实现序列化时有2个选择:一个是实现serializable接口(javaSE本身支持的),一个是实现parcelable接口(Android特有的,效率比前者高,可用于Intent数据传递和进程间通信(IPC))。前者实现简单,只需声明一下;实现后者稍微复杂些,但效率更高。 二者选择的原则: 1)使用内存时, 后者性能更高; 2)serializable在序列化的时候会产生大量的临时变量,引起频繁的GC 3)Parcelable不能在要将数据存储在磁盘上的情况使用,因为Parcelable不能在外界变化的情况下很好地保证数据的持续性。因此,此时应该选择前者。 Parcelable的应用场景: 需要在多个部件(如activity、service)之间通过intent传递一些数据,简单类型(如数字、字符串)可直接放入Intent,复杂类型必须实现Parcelable接口。 实现Parcelable的步骤 1)在类名后面添加“implement Parcelable” 2)重写writeToParcel方法,将你的对象序列化为一个parcel对象。 3)重写describeContents方法,内容接口描述,默认返回0就可以 4)实例化静态内部对象creator实现接口Parcelable.Creator |
|