美文网首页
关于可能出现的Parcelable 序列化问题纪要

关于可能出现的Parcelable 序列化问题纪要

作者: gufugugug | 来源:发表于2019-04-08 10:45 被阅读0次

一大早到公司发现昨天合并的代码推送远程开发分支被reject了,估计是没有更新代码通过更新代码把程序重新运行了一遍发现一个很有意思的问题就是点击图片浏览程序崩溃了,表示很纳闷,what? 难道是哪位同事改了图片加载的代码?查看log发现抛了这样一个运行时异常:

Parcel android.os.Parcel@416ee8b0: Unmarshalling unknown type code 6357102 at offset 172

   从字面上来看是实现Parcelable序列化接口出问题了,坑爹的是我没有网这方面去找问题,应为觉得实现Parcelable接口的对象类应该不会有人去改动,于是断点打了几百遍发现在getIntent时调用hasExtra()方法就已经出错了,更别谈取值了,于是就一直在研究getIntent为什么会抛异常,显然这个方向是错的,getIntent这个是没有的问题,有问题的是hasExtra的内部方法:

其内部应该是对Parcelable序列化对象进行了校验,具体源码没怎么看,如果有问题那么应该就是校验出现问题了,所以抛出异常,最后显然我对该实现Parcelable接口的类check了一下,终于发现了问题所在:

查看代码历史记录通过对比发现,andorid其他同事对该类新增了一个imgType字段但是进行write与read操作时顺序有问题最后导致的Parcel 类型错误。通过改正顺序即可解决此问题

相关文章

  • 关于可能出现的Parcelable 序列化问题纪要

    一大早到公司发现昨天合并的代码推送远程开发分支被reject了,估计是没有更新代码通过更新代码把程序重新运行了一遍...

  • 序列化Serializable和Parcelable

    序列化主要有两种方式:Serializable,Parcelable;区别:内存的序列化Parcelable(直接...

  • AS插件的使用

    Parcelable方式的自动序列化 Android Parcelable code generator实现...

  • Android序列化

    提问:什么是序列化?为什么要序列化?为什么要使用Parcelable?Parcelable与Serializabl...

  • 2021-10-26

    Parcelable是android特有的序列化API,它的出现是为了解决Serializable在序列化的过程中...

  • 序列化

    Parcelable Parcelable是一个接口,只要实现这个接口,该类的对象就可以实现序列化。序列化:由wr...

  • Android - Serializable和Parcelabl

    目录 Parcelable与Serializable的性能比较 传递消息 插件自动生成Parcelable序列化 ...

  • Parcelable使用记录

    Parcelable是Android为我们提供的序列化的接口,Parcelable相对于Serializable的...

  • 第七周 序列化

    话题:关于序列化的知识 1、Parcelable 和 Serializable 有什么用,它们有什么差别?2、自定...

  • Parcelable&Serializable序列化使用

    Parcelable序列化接口使用## 首先先实现Parcelable接口 以下是JavaBean的代码片段 Se...

网友评论

      本文标题:关于可能出现的Parcelable 序列化问题纪要

      本文链接:https://www.haomeiwen.com/subject/gnqonxtx.html