前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Parcelable

Android Parcelable

作者头像
android_薛之涛
发布2018-09-12 10:50:48
5750
发布2018-09-12 10:50:48
举报
文章被收录于专栏:Android-薛之涛Android-薛之涛

一:是什么?

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

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

二:为什么?

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

三:怎么做?

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

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

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

效果:

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

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

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

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

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

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

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

补充:

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

       getClass().getClassLoader();

      Thread.currentThread().getContextClassLoader();

      Author.class.getClassLoader()

完毕!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档