java.lang.ArrayIndexOutOfBoundsE
2018-07-11 本文已影响0人
麦封
最近在项目中遇到了一个奇怪的问题,会在有些机型上出现数组越界的问题,而这个问题报在了原生的api里,下面是完整log日志
![](https://img.haomeiwen.com/i9245768/bb58fbff76b4c055.png)
源码报错的位置是在oncreate中读取savedInstanceState的时候恢复fragment的状态restoreAllstate
![](https://img.haomeiwen.com/i9245768/04e360ef99e9ec70.png)
在Fragmentmanager 中restoreAllState的实现
![](https://img.haomeiwen.com/i9245768/126b6e99aa6987f6.png)
![](https://img.haomeiwen.com/i9245768/284f92305634e14c.png)
问题就出在这个bse.mIndex,其实我的项目里面根本就没有用到过fragment,但问题却出现在这里,但是我的项目是横屏,有可能是横屏的生命周期导致的问题,这也是我自己推测的,具体根本原因还请大神指点,至于解决办法,我采取了很暴力的美学方法,如下
![](https://img.haomeiwen.com/i9245768/149a928b15dc7323.png)
因为我的Activity就没有用到fragment,所以我在获取saveInstanceState之前,将fragment相关移除掉,
![](https://img.haomeiwen.com/i9245768/22b3836d73971684.png)
![](https://img.haomeiwen.com/i9245768/18bb7bcdae262bbb.png)
正是我们移除的那个字段,然后我们再看一下里面是如何处理的这个Parcelable p,
![](https://img.haomeiwen.com/i9245768/007642bf8737cfc6.png)
很明白,直接返回了,也就不会往下执行,到此结束,虽然很暴力但是很完美,还是期望对这个问题有深刻理解的大神,可以讲讲这个问题出现的原因