Android中数据的序列化总结(一)

    进行Android开发的时候,我们都知道不能将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。

    通过Android的API,我们知道有两种选择,即在传递对象时,需要对我们的对象进行Parcelable或者Serializable化。

    Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流以方便数据传输,当然这种传输可以是程序内也可以是两个程序间。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。给一个连接可以瞅瞅他们序列化的区别http://greenrobot.me/devpost/android-parcelable-serializable/

    Android提供了一种新的类型:parcel(英文解释:包裹,小包),本类用来封装数据的容器,封装后的数据可以通过Intent或IPC传递,除了基本类型外,只有实现了Parcelable接口的类才能放入parcel中。  parcel一般都用在Binder通信,通过read和write方法进行客户端与服务端的数据传递(通信)。

    首先我们来看一下官方API对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.

    Parcelable的定义
    下面我们看看parcelable的源码:

   

    内容描述:

   

    写入接口函数,用来打包:

   

   读取接口,目的是从parcel中构造一个实现了parcelable的类的实例对象,因为实现类这里是不可知的,所以需要用到模板的方法,继承类通过模板参数传入。
    为了能够实现模板参数的传入,定义了creator嵌入接口,两个接入函数分别是单个和多个继承类实例。
public interface Creator<T> {
    public T createFromParcel(Parcel source);
    public T[] newArray(int size);
}

   Parcelable的实现使用

参考

1.Android-Parcelable理解与使用(对象序列化) https://my.oschina.net/zhoulc/blog/172163

2.Android的Parcelable接口用法http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html

3.Android Parcelable和Serializable的区别 http://www.cnblogs.com/trinea/archive/2012/11/09/2763213.html

4.Android系统中Parcelable和Serializable的区别 http://greenrobot.me/devpost/android-parcelable-serializable/ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值