在Activity之间传递复杂类型 如NdefMessage
来源:互联网 发布:虎门淘宝摄影招聘 编辑:程序博客网 时间:2024/06/12 23:29
一、实现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) //传递一个整形数组。
这里提示大家,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) 这个方法即可。
二、针对NdefMessage传递数据
发数据:intent.putExtra(TagService.EXTRA_SAVE_MSGS, msgs);
收数据:
if (intent.hasExtra(EXTRA_SAVE_MSGS)) {
Parcelable[] msgs = intent.getParcelableArrayExtra(EXTRA_SAVE_MSGS);
NdefMessage msg = (NdefMessage) msgs[0];
}
- 在Activity之间传递复杂类型 如NdefMessage
- android 在activity之间传递复杂数据类型
- Activity之间传递参数(使用Parcelable和Serializable接口传递复杂类型)
- Activity传递复杂类型的数据
- android activity之间传递bean类型数据如(list<UVedioBean> )
- 在Activity之间传递对象
- 在Activity之间传递参数
- 在Activity之间传递数据
- Android Activity之间传递非原始数据类型
- Activity之间传递List类型数据
- activity之间传递 intent 类型的参数
- activity之间传递bean类型数据
- android activity之间传递bean类型数据
- 不同的Activity之间传递复杂的数据
- 利用 Parcelable 进行 Activity 之间的复杂数据传递
- 在两个activity之间使用intent传递list类型的对象
- EventBus,一个可以在Activity、Fragment、Service之间传递任意类型数据的事件总线框架
- JSON:在两个activity之间使用intent传递list类型的对象
- 项目阶段总结
- linux下建ftp用户,并限制用户访问路径
- 默认Web字体样式
- CXTPHexEdit类的说明
- px、dip、sp区别和使用方法
- 在Activity之间传递复杂类型 如NdefMessage
- 周二的时候月饼到了
- Java学习总结2---Java集合类
- Android用Adb卸载应用程序
- 最近在使用MyEclipse的SVN插件时总是弹出一个大大的对话框,报一个Failed to load JavaHL Library.错误
- 根据旧表创建新表
- MongoDB索引实战技巧
- Installshield 12 中文系列教程之 配置服务 (三)配置IIS
- .net 缓存