您的位置:首页 > 编程语言 > Java开发

java.util.ConcurrentModificationException

2017-09-25 13:13 288 查看

今天在华为mate9(android7.0系统)上遇到这么一个问题,后来发现7.0系统都有这个问题,错误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不相等,所以才导致了这种异常问题.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: