您的位置:首页 > 移动开发 > Android开发

android 关于intent传递类对象的几种方式

2015-05-06 10:52 417 查看
Android中,Activity和Fragment之间传递对象,可以通过将对象序列化并存入Bundle或者Intent中进行传递,也可以将对象转化为JSON字符串,进行传递。

序列化对象可以使用Java的
Serializable
的接口、
Parcelable
接口。转化成JSON字符串,可以使用
Gson
等库。


1.Serializable

Model

传递数据

接收数据


2.转化为JSON字符串

Model

传递数据

接收数据


3.使用Parcelable

实现
Parcelable
接口需要实现两个方法

describeContents方法。内容接口描述,默认返回0就可以;

writeToParcel方法。将传递的数据打包到Parcel容器中。

除了要实现这两个方法还必须创建一个
Parcelable.Creator
接口的实例,用于读取Parcel容器中的数据

Model

传递数据

接收数据


4.性能分析

经过测试,我们得到下图的效果



可以看出,通过转换为字符串的速度是最慢的。Seralizable次之,Parcelable比Seralizable快10倍。所以从性能上考 虑,我们必定优先选择Parcelable。但是Parcelable有大量重复的模板代码,如何简化这些操作,将是下面主要讲解的内容。


5.简化Parcel操作

如果你使用android Studio 可以通过安装android-parcelable-intellij-plugin插件,或者自己配置模板进行操作。


5.1 parceler

除了上面的操作,还有大量的第三方库来简化Parcelable操作。当然使用这些库也许会降低Parcelable的性能。Parceler就是这样一个库。

Parceler使用非常简单,在定义Model时用
@Parcel
进行注解,在传递数据的时候使用
Parcels
wrap
方法来包装成一个
Parcelable
对象。获取数据时用
Parcels
unwrap
方法来获取对象。

Model

传递对象

接收对象

除了Parceler之外,还有如auto-parcel,ParcelableCodeGenerator,ParcelableGenerator等第三方库,这里我将不进行讲解,有兴趣的朋友,可以自行研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: