java.lang.ArrayIndexOutOfBoundsE

2018-07-11  本文已影响0人  麦封

最近在项目中遇到了一个奇怪的问题,会在有些机型上出现数组越界的问题,而这个问题报在了原生的api里,下面是完整log日志

图1

源码报错的位置是在oncreate中读取savedInstanceState的时候恢复fragment的状态restoreAllstate

图2

在Fragmentmanager 中restoreAllState的实现

图3 图4

问题就出在这个bse.mIndex,其实我的项目里面根本就没有用到过fragment,但问题却出现在这里,但是我的项目是横屏,有可能是横屏的生命周期导致的问题,这也是我自己推测的,具体根本原因还请大神指点,至于解决办法,我采取了很暴力的美学方法,如下

图5

因为我的Activity就没有用到fragment,所以我在获取saveInstanceState之前,将fragment相关移除掉,

图6 图7

正是我们移除的那个字段,然后我们再看一下里面是如何处理的这个Parcelable p,

图8

很明白,直接返回了,也就不会往下执行,到此结束,虽然很暴力但是很完美,还是期望对这个问题有深刻理解的大神,可以讲讲这个问题出现的原因

上一篇 下一篇

猜你喜欢

热点阅读