activity之间传值,解决:Parcelable encountered IOException writing serializable object异常

来源:互联网 发布:ewb仿真软件下载 编辑:程序博客网 时间:2024/05/19 03:43

今天写代码的时候遇到了两个activity之间需要传数据,本来是一件非常简单的事情

平常都是使用 intent.putExtra(type,value);就没问题了。

传对象的话就需要实现序列化接口了就行了。

为什么要实现序列化接口,你可以当这个是android的一个机制,就是得这么办,不这么办不行。

实际上实现序列化接口就是为了让数据能变成一种可存储或可传输的状态,可以传输到网络,也可以传输到本地。所以activity之间,你要是不实现序列化接口,那么你在SecondActivity中操作FirstActivity中的数据必将会导致内存泄露。

java中的实现序列化的方式有两种

1实现Serializable接口 

2.实现Parcelable 接口


关于这两个接口的区别呢,在这里正好回忆一下吧

从写代码上来说:

Serializable:实现这个非常简单,直接 implement 就完了,什么都不用写,当然 你要是想写,声明一个 serialVersionUID 变量 就ok了,

serialVersionUID  的话 Android Studio 默认是不会自动生成的,你需要配置一下:

File -> Settings -> Editor -> Inspections -> Java -> Serialization issues -> Serializable class without 'serialVersionUID' 勾上 然后 apply 、ok 就好了。

代码上实现Serialazable就是这么的简单

Parcelable:这个的话就有点复杂了,你需要 implement 这个 接口 然后 重写 

构造方法 (传入Parcel对象)

descirbeContents方法 

writeToParcel方法 

创建一个Parcelable.Creator对象

Android Studio 有 生成Parcelable的插件 可以直接导入插件:File -> Setting -> Plugins -> Browse Respositories 然后搜索 Parcelable 安装

,就可以直接在model里一键导入Parcelable接口了,可以省去很大一部分时间

从实际使用角度上来看:

1.使用内存的使用,Parcelable比Serializable性能高

2.Serializable在序列化时会产生大量的临时变量,引起频繁GC

3.Parcelable不能使用在要将数据存储在磁盘的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。

具体使用还是看自己的需求吧

下面说一下自己的错误。。

从网络上得到的数据 然后 我实现了Serializable接口 传递到第二个activity中,结果突然给我报了一个:Parcelable encountered IOException writing serializable object

然后查看自己的代码,发现并没有实现Parcelable接口啊,然后想到以前好像见过这个异常,是因为内部分没有实现Serializable接口,但是回到代码一看,虽然有内部类,但是我也实现了Serializable接口了啊,为什么还会报这个异常呢?!!!

。。。。。

然后找了好久才发现是因为自己的model类中有一个Bitmap对象,,这个对象本身已经实现了Parcelable接口。。所以才会出现那个异常,然后直接把类改为实现Parcelable接口,然后运 行,果然好了。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 胃饿 但是没食欲不想吃饭怎么办 牙缝大经常塞西怎么办 吃肉老是塞牙缝怎么办 宝宝光喝奶粉不吃饭怎么办 九个月宝宝缺维c怎么办 九个月宝宝缺维d怎么办 9个月大宝宝缺锌怎么办 三周岁宝宝不爱吃饭怎么办 一周岁宝宝不爱吃饭怎么办 两岁半宝宝不自己吃饭怎么办 3岁宝宝不会吃饭怎么办 节食减肥胃疼怎么办呢 减肥不吃饭胃疼怎么办 过度节食伤了胃怎么办 3岁宝宝啥也不吃怎么办 1岁多宝宝不吃饭怎么办 胃口吃辣的难受怎么办 空腹吃辣椒胃疼怎么办 吃东西辣的胃口疼怎么办 吃辣的东西胃烧怎么办 吃母乳的宝宝不爱喝水怎么办 三个月宝宝不肯吃奶粉怎么办 三个月宝宝不肯喝奶粉怎么办 三个月的宝宝不肯喝奶粉怎么办 三个月的宝宝不肯吃奶粉怎么办 饿了还是没食欲怎么办 3岁半幼儿便秘怎么办 小孩字写得难看怎么办 小孩的字写的丑怎么办 小孩字写的太差怎么办 小孩很多字不会写怎么办 食欲不好吃不多怎么办 中班小孩子子不肯写字怎么办 1岁宝便秘该怎么办 两周的宝宝便秘怎么办 3岁宝宝不肯吃药怎么办 1岁婴儿不肯吃药怎么办 9月婴儿不肯吃药怎么办 半岁宝宝不吃药怎么办 1岁宝宝不爱吃药怎么办 2岁吃多了呕吐怎么办啊