一、介绍

1.Parcelable是一个接口,可以实现序列化。

2.序列化的作用体现在:可以使用Intent来传递数据,也可以在进程建传递数据(IPC)。

3.Parcelable在使用的时候,有一个参数类型为:Parcel;它好比一个容器,序列化时,将数据传入。反序列化的时候,再将数据取出。

4.Parcelable不能再将要把数据存入磁盘的情况。因为,Parcelable在有外界的情况下不能有效的保证数据的持续性。

二、使用示例

1.被操作的数据实体和Parcelable的定义。

 package com.app.suodr.serialization;

 import android.os.Parcel;
import android.os.Parcelable; /**
* 作者:WangPei on 2015/7/16 09:43
* 邮箱:460977141@qq.com
*
* 通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象。
* 也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,
* 只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。
*/
public class Parcelable_Person implements Parcelable{ public String name;
public int age; public Parcelable_Person(String name, int age) {
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} @Override
public int describeContents() {
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(age);
dest.writeString(name);
} public static final Creator<Parcelable_Person> CREATOR = new Creator<Parcelable_Person>() {
@Override
public Parcelable_Person createFromParcel(Parcel source) {
return new Parcelable_Person(source);
} @Override
public Parcelable_Person[] newArray(int size) {
return new Parcelable_Person[size];
}
}; public Parcelable_Person(Parcel in) {
age = in.readInt();
name = in.readString();
}
}

2.使用Intent来传递数据分为:传递方和接收方

    传递方定义:

 package com.app.suodr.serialization;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle; import com.app.suodr.ik_family.R; /**
* 作者:WangPei on 2015/7/16 10:06
* 邮箱:460977141@qq.com
*/
public class Parcelable_Post extends Activity{ @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i = getIntent(); Parcelable_Person person = new Parcelable_Person("wangpei",100); i.putExtra("yes",person);
i.setClass(this,Parcelable_Get.class);
startActivity(i);
this.finish();
}
}

    接收方定义:

 package com.app.suodr.serialization;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log; import com.app.suodr.ik_family.R; /**
* 作者:WangPei on 2015/7/16 09:29
* 邮箱:460977141@qq.com
*/
public class Parcelable_Get extends Activity{ private static final String TAG = "myInfo"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); Intent i = getIntent();
Parcelable_Person person = i.getParcelableExtra("yes"); Log.i(TAG,"name: "+person.name+"age: "+person.age);
}
}

【分析】Parcelable的作用的更多相关文章

  1. AJAX练习(一):制作可以自动校验的表单(从原理上分析ajax的作用)

    继上文(AJAX(一)AJAX的简介和基础)作为联系. 传统网页在注册时检测用户名是否被占用,传统的校验显然缓慢笨拙. 当ajax出现后,这种体验有了很大的改观,因为在用户填写表单时,签名的表单项已经 ...

  2. Spring 框架的架包分析、功能作用、优点,及jar架包简介

    Spring 框架的架包详解    Spring的作用     Spring的优势  由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西.我觉得不管你是个初级程序员还是高级程序员抑或 ...

  3. Spring MVC 框架的架包分析,功能作用,优点

    由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西.我觉得不管你是个初级程序员还是高级程序员抑或是软件架构师,在学习和了解一个框架的时候,首先都应该知道的是这个框架的原理和与其有关j ...

  4. 举例分析private的作用【c/c++学习】

    抛砖引玉: c++中private的用处 我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用 ...

  5. Android 虹软2.0人脸识别,注册失败问题 分析synchronized的作用

    人脸识别需要init初始化(FaceServer中),离开时需要unInit销毁:当一个含有人脸识别的界面A跳向另一个含有人脸识别的界面B时,由于初始化和销毁都是对FaceServer类加锁(sync ...

  6. Parcelable和Serializable的区别

      一.Android为什么要序列化?什么是序列化,怎么进行序列化 why 为什么要了解序列化?—— 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们 ...

  7. input子系统分析

    ------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ -------- ...

  8. Spark配置&启动脚本分析

    本文档基于Spark2.0,对spark启动脚本进行分析. date:2016/8/3 author:wangxl Spark配置&启动脚本分析 我们主要关注3类文件,配置文件,启动脚本文件以 ...

  9. 史上最难的一道Java面试题 (分析篇)

    博客园 匠心零度 转载请注明原创出处,谢谢! 无意中了解到如下题目,觉得蛮好. 题目如下: public class TestSync2 implements Runnable { int b = 1 ...

随机推荐

  1. eclipse通过JDBC连接数据库不成功

    配置时出现以下错误: java.lang.ClassNotFoundException:org.gjt.mm.mysql.Driver 则肯定是CLASSPATH设置有问题,也有可能是命令行方式没有重 ...

  2. HTML页面优化

    第一步:加载优化 减少HTTP请求. 因为手机浏览器同时响应请求为4个请求(Android支持4个,iOS 5后可支持6个),所以要尽量减少页面的请求数,首次加载同时请求数不能超过4个.a) 合并CS ...

  3. gulp教程之gulp-concat

    简介: 使用gulp-concat合并javascript文件,减少网络请求. 1.安装nodejs/全局安装gulp/本地安装gulp/创建package.json和gulpfile.js文件 1. ...

  4. 初始通过 FastClick.notNeeded 方法判断是否需要做后续相关处理

    其实前面几篇文章大家都遇到一些错误,很多时候呢,我并没有直接回复解决方案,不是LZ不想告诉大家,如果不想那就不写这个了,估计博客园啊CSDN啊那么多写博客的,很少有人把现用框架分享出来,既然分享就毫不 ...

  5. UImenuController

    长按出现选择项:关键方法 在 tabview 中需要制定 tabview 的一些方法:关键为 在某种特殊情况下,需要自定义的时候:采用如下方式

  6. [IOS 开发代码]UIImage+Blur 网络图片模糊用法

    UIImage-Helpers 网络图片模糊用法   float quality = .00001f;    float blurred = .5f; NSURL *url = [NSURL URLW ...

  7. 优化Android Studio/Gradle构建

     使用Android Studio进行开,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这 ...

  8. Ionic的跨域问题

    跨域大家都不陌生,但最近一直遇到一个坑,也是自身对ajax和angular的不深入造成,所以记录一笔,下次遇到绕过. 参考过:http://ionichina.com/topic/54f051698c ...

  9. String.format介绍

    java类中提供的一种方法:String.format(String format, Object ... args) 提供字符串格式化功能: 不同转换符实现不同数据类型到字符串的转换: %s--字符 ...

  10. 在Django中进行注册用户的邮件确认

    之前利用Flask写博客时(http://hbnnlove.sinaapp.com),我对注册模块的逻辑设计很简单,就是用户填写注册表单,然后提交,数据库会更新User表中的数据,字段主要有用户名,哈 ...