Parcelable 类,接口类,用于数据的序列化封装。常见的Bundle,Intent类都实现了该类。

 
实现该类需要实现writeToParcel和describeContents方法,最后还需要实现一个静态接口Creator

延伸下:为何需要数据的序列化?
数据的传输和保存时,如果一个对象A引用了另一个对象B,那么如果我们需要保存两个对象A,B,用普通的数据保存则是要进行保存两次B,但是通过序列化则不会,序列化会在保存前先给对象编号,然后在保存时遍历前面,如果存在则标记为已保存。
序列化的定义是将对象或者类,序列化成可以传输的流,从而可以传送给别人使用。所以运用在IPC,网络传输,文件存储。
序列化可以通过实现Serializable 和 Parcelable来实现。
Serializable Java自带,效率低,但是可以存储到本地。
parcelable Android自有,效率高,不可存储本地。
 
 
附一个简易的Parcelable类的实现
public class MyParcel implements Parcelable {
       
        private int mIntData ;
        private String mStringData ;
       
        public MyParcel() {
              // TODO Auto-generated constructor stub
       }
        public MyParcel(Parcel in){
              mIntData = in.readInt();
              mStringData = in.readString();
             
       }
       
        public String getStringData(){
              return mStringData ;
       }
        public void setStringData(String data){
              mStringData = data;
       }
        @Override
        public int describeContents() {
              // TODO Auto-generated method stub
              return 0;
       }
 
        @Override
        public void writeToParcel(Parcel dest, int flags) {
              // TODO Auto-generated method stub
             dest.writeInt( mIntData);
             dest.writeString( mStringData);
       }
 
        public static final Parcelable .Creator<MyParcel> CREATOR = new Parcelable.Creator<MyParcel>() {
 
              @Override
              public MyParcel createFromParcel(Parcel source) {
                     // TODO Auto-generated method stub
                     return new MyParcel(source);
             }
 
              @Override
              public MyParcel[] newArray(int size) {
                     // TODO Auto-generated method stub
                     return new MyParcel[size];
             }
       };
}

Parcelable 小记的更多相关文章

  1. [原]Paste.deploy 与 WSGI, keystone 小记

    Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...

  2. 对 Serializable和Parcelable理解

    1.首先他们两个接口都是为了实现对象的序列化,使之可以传递,所谓序列化就是将对象信息装换成可以存储的介质的过程. 2.Serializable是jdk所提供的序列化接口,该接口存在于io包下,可想用于 ...

  3. Parcelable序列化的使用,关于intent.getParcelableArrayExtra的使用

    Parcelable相较于Serializable的效率更高 public class ChargeMode implements Parcelable{ public String name; pu ...

  4. MySql 小记

    MySql  简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...

  5. Android 的Parcelable接口

    此文转载自http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html 1. Parcelable接口 Interface ...

  6. Git小记

    Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...

  7. 广州PostgreSQL用户会技术交流会小记 2015-9-19

    广州PostgreSQL用户会技术交流会小记 2015-9-19 今天去了广州PostgreSQL用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用PostgreSQL-X2 ...

  8. 东哥读书小记 之 《MacTalk人生元编程》

         一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...

  9. Paypal支付小记

    Paypal支付小记 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...

随机推荐

  1. Python的垃圾回收机制(引用计数+标记清除+分代回收)

    一.写在前面: 我们都知道Python一种面向对象的脚本语言,对象是Python中非常重要的一个概念.在Python中数字是对象,字符串是对象,任何事物都是对象,而它们的核心就是一个结构体--PyOb ...

  2. .NET 平台上C#语言的基本技术点

    第一次用画图3D画的知识点,有点丑..........开始Csharp之路

  3. C#如何根据类的名词创建类的实例

    这个大概分为两种情况:1-在同一程序集访问该类:2-在不同的程序集访问 A:同一程序集,使用微软的创建对象的类:System.Activator: 先通过类名,获取到类型,在使用用于创建本地或远程对象 ...

  4. 【工作查漏补缺】jQuery ajax - serializeArray()

    方法用途: 获取表单内的所有有name的所有数据框,在非表单提交需要挨个遍历组装数据的情况下很好用 ps:需要jQuery支持 var twoform = $("#editProductAc ...

  5. CSS 火焰?不在话下

    正文从下面开始. 今天的小技巧是使用纯 CSS 生成火焰,逼真一点的火焰. 嗯,长什么样子?在 CodePen 上输入关键字 CSS Fire,能找到这样的: 或者这样的: 我们希望,仅仅使用 CSS ...

  6. MSSQL 更改表结构

    更改表结构: alter TABLE 表1 ALTER COLUMN 列名1 NCHAR(40)

  7. Sqlserver 事务处理模板

    USE StuDB GO /****** Object: StoredProcedure [dbo].[proc_live_send_answer_v4] Script Date: 06/20/201 ...

  8. Postgresql数据库部署之:Postgresql本机启动和Postgresql注册成windows 服务

    1.初始化并创建数据库(一次即可)  initdb \data --locale=chs -U postgres -W  You can now start the database server u ...

  9. 【转载】Verilog中的parameter

    1. 概述 在Verilog中我们常常会遇到要将一个常量(算法中的某个参数)赋给很多个变量的情况,如: x = 10;y = 10;z = 10;如果此时10要改为9,就需要在代码中修改3个地方,非常 ...

  10. 使用 coverlet 查看.NET Core应用的测试覆盖率

    代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率. Visual Studio 2017的企业版可以直接查看测试的代码覆盖率, ...