Android Parcelable

一:是什么?

      Paracelable是android自己的实现序列化的接口,是anroid推荐使用的.那么什么事序列化呢?简单来说就是将对象转换为可以传输的二进制流(二进制序列)的过程,这样我们就可以通过序列化,转化为可以在网络传输或者保存到本地的流(序列),从而进行传输数据 ,那反序列化就是从二进制流(序列)转化为对象的过程

      简单来说,Parcel提供了一套机制,可以将序列化之后的数据写入到一个共享内存中,其他进程通过Parcel可以从这块共享内存中读出字节流,并反序列化成对象.而Parcel本身就是包裹的意思.

二:为什么?

再次之前我都是使用Serializable,虽然知道了Paracelable,但还是使用Serializable,理由就是简单,只需要类extends 该接口即可。但当我知道Paracelable的效率最高可以达到Serializable的10倍我就果断放弃传统方式了。并在此记录。


三:怎么做?

第一步:首先写一个User类实现Parcelable接口。我们这里先列举User类常用类型int ,String ,boolean;


6748497-61a32602f2ea7539.png


这里要重写两个方法,writeToParcel是序列化方法,如图:


6748497-5825eed78a06350e.png

接着会继续让你实现方法。我们按提示来.


6748497-170f77afdc7285c0.png

效果:


6748497-028b9e90d63b57e4.png

根据上面过程的介绍,Parcelable就写完了,基本都是自动生成的,接下来就可以直接在Intent中传输了,可以自己写两个Activity传输一下数据试一下,其中一个putExtra另一getParcelableExtra即可。


下面来说一下对象和集合的序列化。我们在之前的user类中,再添加个对象和集合,如图:


6748497-bb40dea944eda124.png

如果实现Parcelable接口的对象中包含对象或者集合,那么其中的对象也要实现Parcelable接口 .,也就是我们的Author要实现Parcelable接口:


6748497-f3b1bd38e1f49c98.png

跟User是一样的,没啥说的。

先看添加了集合和对象已经对象集合跟之前User的构造方法中的变化:


6748497-36b268bc70778882.png


反序列化方法中还是跟之前一样:


6748497-39f77453f4f76da0.png


序列化的方法:都有注释不解释。


6748497-bf90449f61f2dd8f.png

补充:

//这里获取类加载器主要有几种方式

       getClass().getClassLoader();

      Thread.currentThread().getContextClassLoader();

      Author.class.getClassLoader()


完毕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛之涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值