Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 560|回复: 0

[实例教程]在Activity之间传递复杂类型

[复制链接]

该用户从未签到

发表于 2011-10-22 13:26:16 | 显示全部楼层 |阅读模式
很多Android开发者对于Activity中如何传递复杂的类型不是很清楚,这里Android123再帮刚入门的开发者整理下。对于传递
  一、实现Parcelable接口
   对于Android来说传递复杂类型,主要是将自己的类转换为基础的字节数组,Activity之间传递数据是通过Intent实现的,对于二进制数据,传递的参数为putExtra(String name, Parcelable value) ,比如Bitmap类就实现了Parcelable接口,如果需要在Activity中传递图片,可以直接用Bitmap类型,当然如果本身是Drawable你可以先转化为Bitmap,可以参考 Bitmap和Drawable相互转换方法 一文。
  相关的Intent方法还有
putExtra(String name, Parcelable[] value)  // 传递一个Parcelable数组
putExtra(String name, Bundle value)  //传递一个Bundle对象
putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)  //传递一个实现Parcelable接口的对象数组
putStringArrayListExtra(String name, ArrayList<String> value)  //传递一个字符串数组
putIntegerArrayListExtra(String name, ArrayList<Integer> value)  //传递一个整形数组。
  这里Android开发网提示大家,Integer这些装箱类型,Intent还实现了 putExtra(String name, int[] value)  这样的基础类型数组,同时Parcelable效率比标准的java序列化更高,同时还被用作在AIDL中交换数据,所以掌握Parcelable这样的显示序列化技术,可以大幅提高数据交换性能。
  二、使用全局单例模式
  由于Android中Activity传递主要靠Intent这个类,Intent类内部传递数据的效率仍然需要拷贝,如果数据量很大,还可以考虑使用Singleton Pattern单例模式定义一个全局的静态类,这样传递的效率最高,大家可以看下Java设计模式,了解其中的妙用。
  三、实现Serializable接口
   如果你学习过传统的Java,则可以通过串行化技术,实现Serializable接口,其实这个原理和Parcelable差不多,均将自己的类转换为基本的类型比如说字节数组。在Android中不是很实用,这里不再赘述,在Intent中使用Intent  putExtra(String name, Serializable value)  这个方法即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-9 07:34 , Processed in 0.326363 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表