26
2017
09

java.util.ConcurrentModificationException

今天在华为mate9上遇到这么一个问题,错误log:

这里写图片描述

错误log中报AppManager类112行出错,如下图:

这里写图片描述

这个bug很特殊,我在小米和华为的部分手机中,都没有报错,可就在华为mate9中报错,实在很苦恼,上网了查阅了资料,终于在这http://www.jianshu.com/p/c5b52927a61a 这篇文章中找到了答案,具体解决办法也很简单,原先代码中我是这样创建activity管理栈的

这里写图片描述

我是用Stack创建的,原先我以为是Stack的问题,于是我改成用ArrayList试试,还是一样的错误,最终参考网上的,采用CopyOnWriteArrayList就解决了问题,

这里写图片描述

CopyOnWriteArrayList是一个线程安全的ArrayList,其实现原理在于,每次add,remove等所有的操作都是重新创建一个新的数组,再把引用指向新的数组;而先前使用的Stack,ArrayList的add、remove、clear方法都会造成modCount的改变。迭代过程中如何调用这些方法就会造成modCount的增加,使迭代类中expectedModCount和modCount不相等,所以才导致了这种异常问题.

上一篇:页面开发总结 下一篇:App native crash (libmsc.so :: MSPStrGetKVPairVal)