在开发中不少要用到Activity直接传输对象,下面我们来看看,其实跟java里面差不多
   自定义对象的传递:通过intent传递自定义对象的方法有两个
  第一是实现Serialization接口;
  第二是实现Parcelable接口;

下面来看个例子:

package com.example.bean;import java.io.Serializable;public class Bed implements Serializable {private String name;private int number;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}@Overridepublic String toString() {return "Name:" + getName() + ",Number:" + getNumber();}}

package com.example.bean;import android.os.Parcel;import android.os.Parcelable;public class Patient implements Parcelable {private String name;private int number;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public static final Parcelable.Creator<Patient> CREATOR = new Parcelable.Creator<Patient>() {public Patient createFromParcel(Parcel p) {Patient patient = new Patient();patient.name = p.readString();patient.number = p.readInt();return patient;}public Patient[] newArray(int size) {return new Patient[size];}};@Overridepublic int describeContents() {return 0;}/****@desc  注:这里的write方法和createFromParcel里的一一对应,不然createFromParcel都是p.readString(),你怎么知道是哪一个**/@Overridepublic void writeToParcel(Parcel p, int flags) {p.writeString(name);p.writeInt(number);}@Overridepublic String toString() {return "Name:" + getName() + ",Number:" + getNumber();}}

TestActivity.java:StringBuilder sb = new StringBuilder();sb.append("Serializable Bed对象\n");Bed bed = (Bed) getIntent().getExtras().get("bed");sb.append(bed.toString());sb.append("\n\nList<Serializable Bed>集合\n");List<Bed> listBed = (List<Bed>) getIntent().getSerializableExtra("beds");for (int i = 0; i < listBed.size(); i++) {sb.append(listBed.get(i).toString() + ";");}sb.append("\n\nParcelable Patient对象\n");Patient patient = getIntent().getParcelableExtra("patient1");sb.append(patient.toString());sb.append("\n\nParcelable Patient byte[]\n");byte[] data = getIntent().getByteArrayExtra("patient2");if (data != null) {Parcel in = Parcel.obtain();in.unmarshall(data, 0, data.length);in.setDataPosition(0);patient = Patient.CREATOR.createFromParcel(in);}sb.append(patient.toString());sb.append("\n\nString数组\n");String[] str = getIntent().getStringArrayExtra("patients");for (int i = 0; i < str.length; i++) {sb.append(str[i]);}TextView tv = (TextView) findViewById(R.id.tv);tv.setText(sb);

android 对象传输及parcel机制相关推荐

  1. 探索Android中的Parcel机制(上)

    一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化--,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象.主要应用是利用外部存储设备保存对象状态 ...

  2. 探索Android中的Parcel机制(上) .

    一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化--,其作用是能将数据对象存入字节流当中,在需要时重新生成对象.主要应用是利用外部存储设备保存对象状态, ...

  3. 探索Android中的Parcel机制(下)

    上一篇中我们透过源码看到了Parcel背后的机制,本质上把它当成一个Serialize就可以了,只是它是在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此会更加高效. 我们接下来要说的是Pa ...

  4. 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学 ...

  5. Android进程间通信(IPC)机制Binder简要介绍和学习计划

    在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中.那么,不在同一个进程的 ...

  6. Android源码分析 - Parcel 与 Parcelable

    0. 相关分享 Android-全面理解Binder原理 Android特别的数据结构(二)ArrayMap源码解析 1. 序列化 - Parcelable和Serializable的关系 如果我们需 ...

  7. android对象序列化,Android序列化总结

    前言 公园里,一位仙风鹤骨的老者在打太极,一招一式都仙气十足,一个年轻人走过去:"大爷,太极这玩意儿花拳绣腿,你练它干啥?"老者淡淡一笑:"年轻人,你还没有领悟到太极的真 ...

  8. Android应用中通过AIDL机制实现进程间的通讯实例

    Android中,每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢?显然,Java中是不支持跨进程内存共享的,因此要传递对象,需要把对象解析成操作系统能够理解的数据格式,以达 ...

  9. Android 为什么要有handler机制?handler机制的原理

    为什么要有handler机制? 在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化.有关Handler的作用,我们总结为:与其他线程协同工作,接收其他线程的消息并通过 ...

  10. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

最新文章

  1. 这些AI应用不简单,Keep首场技术开放日限时报名ing!
  2. 三阶魔方花样玩法,公式汇总
  3. 【Python】100行Python代码轻松开发个人博客
  4. python实现高校教务管理系统_基于Python技术的教务管理系统的研究与开发
  5. ArcGIS 10.0安装之 ArcSDE的安装
  6. VS2019调试查看变量_单片机编程软件一点通,IAR单片机编程软件工程调试方法
  7. PHP系统发布指什么,cis系统是指什么
  8. 报告:代币化资产市值已超200亿美元
  9. 将String数组转换到Double数组
  10. jni java参数签名,什么是“方法签名”参数调用使用JNI的Java方法?
  11. ubuntu怎么设置linux的ip地址,linux,ubuntu设置ip
  12. elementui表格列宽自适应_Java 操作Word表格——创建嵌套表格、添加复制表格行或列...
  13. Oracle 存储过程、存储函数 与原生 JDBC 调用
  14. html5浏览器提示翻译,IE浏览器自动翻译网页设置方法
  15. 软件项目管理 6.6.三点估算法
  16. 网上找的更具纬度经度算计两点之间的距离,得到的结果不准确, 小程序获取用户位置信息返回的纬度经度与实际位置不正确。
  17. 判断输入的日期是一年的第几天或者星期几
  18. 西安交大计算机在线作业答案,西安交大电路在线作业及答案.docx
  19. IntelliJ Idea -- 多次启动同一个main 方法
  20. 扒一扒磁条导航和Slam导航的AGV交管思路

热门文章

  1. linux之终端的灵活使用。SCREEN
  2. 数据交换网技术---与非安全网络业务互联的新思路
  3. android 5.0论坛,Android 安卓5.0以下版本提权漏洞
  4. 漫画:Dijkstra 算法的优化
  5. (七)洞悉linux下的Netfilteriptables:状态防火墙
  6. STM32相关问题解决方法
  7. FFmpeg的H.264解码器源代码简单分析
  8. arm汇编—str,mov等指令
  9. Linux内核部件分析 设备驱动模型之device
  10. Dijkstra算法(朴素,堆优化)+例题