很详细的android序列化过程Parcelable
直接上代码:注释都写的很清楚了。
public class Entry implements Parcelable{ public int userID; public String username; public boolean isMale; public Book book;//序列化对象可以嵌套序列化对象,前提是2个类的对象都被序列号过 //几乎所有情况下都返回0,可以不管 @Override public int describeContents() { return 0; } //序列化对象,将对象写到序列号数据结构中 //flags:大多数情况为0 @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(userID); out.writeString(username); out.writeInt(isMale ? 1:0); out.writeParcelable(book, 0); // out.writeList(list);也可以序列号list和Map,前提是list和Map里面的数据都是可序列号的 // out.writeMap(Map); } public Entry(int userID,String username,boolean isMale) { this.userID = userID; this.username = username; this.isMale = isMale; } //反序列化 public static final Parcelable.Creator<Entry> CREATOR = new Creator<Entry>() { //创建指定长度的原始对象数组 @Override public Entry[] newArray(int size) { // TODO Auto-generated method stub return new Entry[size]; } //从序列号过后的对象中创建原始对象 @Override public Entry createFromParcel(Parcel source) { // TODO Auto-generated method stub return new Entry(source); } }; //从序列号后的对象中创建原始对象 private Entry(Parcel in){ userID = in.readInt(); username = in.readString(); isMale = in.readInt() == 1; in.readParcelable(Thread.currentThread().getContextClassLoader()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Android Parcelable接口使用方法详解
Android Parcelable接口使用方法详解 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 implementin
-
Android中Serializable和Parcelable序列化对象详解
本文详细对Android中Serializable和Parcelable序列化对象进行学习,具体内容如下 学习内容: 1.序列化的目的 2.Android中序列化的两种方式 3.Parcelable与Serializable的性能比较 4.Android中如何使用Parcelable进行序列化操作 5.Parcelable的工作原理 6.相关实例 1.序列化的目的 1).永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 2).通过序列化操作将对象数据在网络上进行传输(由于网络传输是以
-
Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法
Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key, Object);其中前面一种方法中的Object要实现Serializable接口,后面一种方法中的Object要实现Parcelable接口.下面我们以一个完整的例子来说明. 1.新建一个Android的工程,其中该工程的目录结构如下图: 2. 修改main.xml布局文件.布局文件的源码如下
-
Android Parcelable与Serializable详解及区别
Android Parcelable与 Serializable区别 1.作用 Serializable的作用是为了保存对象的属性到本地文件.数据库.网络流.rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的.而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体. 从上面的设计上我
-
Android中Parcelable的作用实例解析
在android提供了一种类型:Parcel.被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递. 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中. Parcelable实现要点:需要实现三个东西 1)writeToParcel 方法.该方法将类的数据写入外部提供的Parcel中.声明如下: writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc 2)describeContents方法.没
-
Android中的Parcelable序列化对象
今天查阅资料,简单了解了一下Parcelable接口,它是android提供的序列化对象的接口,比java中的 Serializable高效些.通过这个接口序列化对象主要有两步: 1.实现public void writeToParcel(Parcel dest, int flags) {}方法: 2.实例化CREATOR public static final Parcelable.Creator<ParcelableImpl> CREATOR = new Parcelable.Creato
-
Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍
Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写
-
Android中Intent传递对象的两种方法Serializable,Parcelable
Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者的使用场景和区别: 1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable. 2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC. 3)Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelab
-
很详细的android序列化过程Parcelable
直接上代码:注释都写的很清楚了. public class Entry implements Parcelable{ public int userID; public String username; public boolean isMale; public Book book;//序列化对象可以嵌套序列化对象,前提是2个类的对象都被序列号过 //几乎所有情况下都返回0,可以不管 @Override public int describeContents() { return 0; } //
-
Android序列化之Parcelable和Serializable的使用详解
序列化与反序列 首先来了解一下序列化与反序列化. 序列化 由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化. 反序列化 反序列化恰恰是序列化的反向操作,也就是说,把已存在在磁盘或者其他介质中的对象,反序列化(读取)到内存中,以便后续操作,而这个过程就叫做反序列化. 概括性来说序列化是指将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过程.在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序
-
Android下Activity间通信序列化过程中的深浅拷贝浅析
前言 问题的背景是,视频互动业务需要增加弹幕功能,但是播放器的视图是伪横屏的,即,他是一种类似于使用 rotate(90.0)的方式,旋转横屏的,在 Activity 层面上还是一个竖屏的状态.那么弹幕输入的时候的键盘,也是竖屏的.这会带来比较严重的用户体验问题. 由于屏幕旋转状态在 android 下,是一个 Activity 层面上的事情,而且相当的底层,无从 hook,多方调研以后,决定采拉起一个横屏的 Activity 作为键盘输入的专用 Activity. 这里的代码很快就可以写好,如
-
Android 序列化的存储和读取总结及简单使用
Android 序列化 1.序列化的目的 (1).永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 (2).通过序列化操作将对象数据在网络上进行传输(由于网络传输是以字节流的方式对数据进行传输的.因此序列化的目的是将对象数据转换成字节流的形式) (3).将对象数据在进程之间进行传递(Activity之间传递对象数据时,需要在当前的Activity中对对象数据进行序列化操作.在另一个Activity中需要进行反序列化操作讲数据取出) (4).Java平台允许我们在内存中创建
-
Android序列化XML数据
什么是XML?首先我们先了解一下什么是XML.XML,可扩展标记语言 (Extensible Markup Language) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,这是百度百科的解释.而XML是一种在Internet中传输数据的常见格式,它与HTML一样,都是SGML(标准通用标记语言),无论你是需要通过Internet访问数据,或者发送数据给Web服务,都可能需要用到XML的知识.恰恰Android应用程序
-
Android 定时任务过程详解
在Android开发中,通过以下三种方法定时执行任务: 一.采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式) 二.采用Handler的postDelayed(Runnable, long)方法(最简单的android实现) 三.采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用) android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的
-
在Android Studio中Parcelable插件的简单使用教程
在Android Studio中,你可以很快速的使用Parcelable插件进行实体类的序列化的实现,使用该插件后,你的实体类可以快速的实现Parcelable接口而不用写额外的代码.因为该插件会帮你快速的生成必须提供的方法,可以说是很高效率的了. 首先需要下载该插件: 在File->Setting->Plugins里的搜索框内输入内容:android parcelable code generator,然后自己下载好重启studio即可使用该插件了. 下载插件界面: 重启studio: 点击
-
jenkins 远程构建Android的过程详解
由于企业的需求,需要做一个网站开分享每个版本的Android的app,所以需要使用的工具如下: Jenkins平台,远程编译环境服务器一台,web服务器一台,根据自己的选择,可以搭配自己的资源,废话少说,直奔主题 1. Jenkins的操作 在Jenkins中添加一个节点,设置好远程的工作目录,创建好服务器的标签,然后创建好相关的环境键值对,比如Android_home,Java_home,Gradle_home等,这些都是比较平常的操作,这里就不罗嗦了,值得注意的有两点:第一,java的路径问
-
详解Android系统启动过程
计算机是如何启动的 计算机的硬件包括:CPU,内存,硬盘,显卡,显示器,键盘鼠标等输入输出设备.所有的软件都是存放在硬盘中,程序执行时,需要将程序从硬盘上读取到内存中,然后加载到CPU中来运行.当按下开机键时,内存中什么都没有,因此需要借助某种方式,将操作系统加载到内存中,而完成这项任务的就是BIOS. 引导阶段 BIOS:BIOS是主板芯片上的一个程序,计算机通电后,第一件事情就是读取BIOS. BIOS首先进行硬件检测,检查计算机硬件能否满足运行的基本条件.如果硬件出现问题,主板发出不同的蜂
-
Taro打包Android apk过程详解
首先,我们使用使用命令创建模板项目,创建的命令如下. taro init myApp 然后,使用 yarn 或者 npm install安装依赖包,并使用下面的命令编译Taro项目. yarn dev:rn 启动后会开启一个监听的进程. 不过,细心的你可能会发现,使用taro init命令初始化的项目是没有原生模块支持的,原来Taro使用了一个壳子工程,首先使用下面的命令下载壳子工程taro-native-shell,如下所示. git clone git@github.com:NervJS/t
随机推荐
- 网页在线视频播放代码大全
- js+html制作简单日历的方法
- js实现无缝滚动特效
- ASP.NET的适配器设计模式(Adapter)应用详解
- 测试PHP连接MYSQL成功与否的代码
- Docker常用的清除容器镜像命令小结
- Python Tkinter基础控件用法
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- 在数据库中自动生成编号的实现方法分享
- innodb存储引擎修改表共享空间为独立空间
- jQuery 动画弹出窗体支持多种展现方式
- 基于JavaScript实现下拉列表左右移动代码
- 70+漂亮且极具亲和力的导航菜单设计国外网站推荐
- java从控制台接收一个数字的实例详解
- Java List 用法实例详解
- JoshChen_php新手进阶高手不可或缺的规范介绍
- Windows下PHP的任意文件执行漏洞
- PHP实现链式操作的三种方法详解
- npm配置国内镜像资源+淘宝镜像的方法
- java统计文件中每个字符出现的个数