这篇文章主要介绍了Android中Parcelable的作用,对于Android初学者有一定的参考学习价值,需要的朋友可以参考下

在android提供了一种类型:Parcel。被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable实现要点:需要实现三个东西

1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下:

writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc

2)describeContents方法。没搞懂有什么用,反正直接返回0也可以

3)静态的Parcelable.Creator接口。本接口有两个方法:

createFromParcel(Parcel in) 实现从in中创建出类的实例的功能

newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话(return new T[size])即可。估计本方法是供外部类反序列化本类数组使用。

测试用的接收信息Activity:

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Parcelable;

public class Test extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Intent i = getIntent();

Person p = i.getParcelableExtra("yes");

System.out.println("---->"+p.name);

System.out.println("---->"+p.map.size());

}

}

发送的Activity:

import java.util.HashMap;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

public class TestNew extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Intent intent = new Intent();

Person p = new Person();

p.map = new HashMap();

p.map.put("yes", "ido");

p.name="ok";

intent.putExtra("yes", p);

intent.setClass(this, Test.class);

startActivity(intent);

}

}

Parcelable的实现类:

import java.util.HashMap;

import android.os.Parcel;

import android.os.Parcelable;

public class Person implements Parcelable {

public HashMap map = new HashMap ();

public String name ;

@Override

public int describeContents() {

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeMap(map);

dest.writeString(name);

}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {

//重写Creator

@Override

public Person createFromParcel(Parcel source) {

Person p = new Person();

p.map=source.readHashMap(HashMap.class.getClassLoader());

p.name=source.readString();

return p;

}

@Override

public Person[] newArray(int size) {

// TODO Auto-generated method stub

return null;

}

};

}

java parcelable_Android中Parcelable的作用实例解析相关推荐

  1. Java开发中Netty线程模型原理解析!

    Java开发中Netty线程模型原理解析,Netty是Java领域有名的开源网络库具有高性能和高扩展性的特点,很多流行的框架都是基于它来构建.Netty 线程模型不是一成不变的,取决于用户的启动参数配 ...

  2. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  3. java asynchronize_Java 中synchronize函数的实例详解

    Java 中synchronize函数的实例详解 java中的一个类的成员函数若用synchronized来修饰,则对应同一个对象,多个线程像调用这个对象的这个同步函数时必须等到上一个线程调用完才能由 ...

  4. xml转java代码_java 中xml转换为Bean实例解析(纯代码)

    最近用到,记录一个自己写的demo在根元素上使用@XmlRootElement注解,name为元素名 子元素属性使用@XmlElement,name为元素名 若有属性,例如,则使用@XmlAttrib ...

  5. java jxl_java 中JXL操作Excel实例详解

    JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一 ...

  6. python中enumerate在for循环中用法_python中enumerate的用法实例解析

    在python中enumerate的用法多用于在for循环中得到计数,本文即以实例形式向大家展现python中enumerate的用法.具体如下: enumerate参数为可遍历的变量,如 字符串,列 ...

  7. python enumerate_python中enumerate的用法实例解析

    在python中enumerate的用法多用于在for循环中得到计数,本文即以实例形式向大家展现python中enumerate的用法.具体如下: enumerate参数为可遍历的变量,如 字符串,列 ...

  8. java中注解的解析_【Java】中的注解与注解解析器

    /** * 该注解描述了作用范围 * java RetentionPolicy.SOURCE * java+class RetentionPolicy.CLASS * java+class+jvm R ...

  9. java重载中this的作用_Java2:构造方法、方法重载和this关键字

    上一篇博客小编已经给读者介绍了Java入门的类与对象,这一章节我们来了解一下构造方法,方法重载以及this关键字. 一:构造方法 Java中方法一般有2中:普通方法和构造方法.我们已经知道普通方法的声 ...

最新文章

  1. XML的二十个热点问题
  2. Android学习--------实现增删改查数据库操作以及实现相似微信好友对话管理操作...
  3. python_数据库连接之mysql
  4. Deepin 下安装 LAMP
  5. PL/SQL Developer 13.0设置中文
  6. java创建线程几种_java中创建线程有几种方式
  7. 2021年河南高考成绩排名查询一分一段表,2021年河南高考文科一分一段表,河南一分一段表文科位次排名查询...
  8. php mvc登陆注册,Asp.Net MVC 5使用Identity之简单的注册和登陆
  9. 高职院校计算机基础课程,高职院校计算机基础课程教学探讨的论文
  10. 每天一个linux命令(60):scp命令
  11. 基于CC2430的基础实验6---UART串口实验
  12. 两个字说清楚编程语言实质-Python基础前传(3)
  13. 思科交换机配置试题_思科交换机基本配置
  14. 小赛毛游C记——初识C语言(1)
  15. 免费内网穿透远程访问家里的监控
  16. Laya.TextInput组件中禁用后改变输入框背景色和文字颜色
  17. 小白学习java集合框架(集合Collection)
  18. 猴子选大王(Java)
  19. 酷派Y60-C1官方ROM内容解析
  20. 在Ubuntu 14.04下安装Pepper Flash

热门文章

  1. java基于ssm的物资物料管理系统
  2. 关于冷备份与热备份的对比理解
  3. muduo源码分析之回调模块
  4. 以移动浦发联名挂件卡解析qPBOC应用
  5. AutoDYN学习笔记---Part_1
  6. mtk+android+之mt6577驱动笔记,MTK6577+Android之音频(audio)移植
  7. UOS家庭版V21版BCM43142无线网卡网卡驱动重装
  8. Gopher China 2021 讲师专访 — 万俊峰
  9. QQ2011安装写至文件错误
  10. 河南工业大学计算机科学与技术全国排名,2019河南工业大学专业排名