Android中 Intent/Bundle传递对象取值为null的剖析以及Serializable和Parcelable原理解析

在Android中传递数据一般为基本数据类型,int double float 等

有时候会传递对象,那么这个对象和其内部类就要实现Serializable这个接口或者Parcelable这个接口

Serializable:(不推荐)

这个比较简单 一般直接写上implements Serializable即可,复杂点需要加上ID。long类型。

因为这个接口只是一个空接口,并没有需要实现的方法

 

从图1可以看出这个java.io.Serializable是基于IO包下的,那么可想而知IO一般都是耗时操作,读写数据等,

所以java.io.Serializable 会将对象写入到IO进行序列化,从而进行数据传递,但是这是比较耗时的,不推荐这种写法

 

第二种是Parcelable(推荐)

 

 

然后复写其

writeToParcel
describeContents
Creator<T t>

 

主要方法,然后写一个构造类,(如果使用FastJSon去解析数据记得添加一个无参的构造方法,否则会解析对象失败

 

之前用Eclipse和开始用AS开发这几个方法都是手写,费事,AS可以自动生成相对应的方法

但是Object类型不给生成其对应的writeToParcel和构造方法的读取,因为它不能判断是写入int 或者String 或者是0/1

这也算比较坑,所以使用Intent Bundle 传递

Parcelable数据的时候,一定得看好是否生成了所需要的字段,没有的话可以手动更改类型,与后台开发人员进行协定格式

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值