ConcurrentModificationException 错误

tiancai110a 2014-07-11 01:13:01
我在网上搜索过了 遍历过程中增删list造成的 但是我试过了将变量保存起来,遍历完统一删除 还是会报错 逻辑没有问题



我的问题是这样的:
我写了一个飞行射击游戏,有时候飞机会以一定的组合顺序出现,我把它叫做敌阵 ,我写了一个基于定时器的基类,敌阵类继承自这个类,在类中的 timertask中按一定顺序生成敌机加入链表中 , 然后在绘制每一帧的时候检测碰撞并且把碰撞的对象在链表中删掉,一般同时有好几个定时器存在,timertask中我也加入同步变量

=new TimerTask() {
public void run() {
if(getSynflag()==false)
return;
}

每次遍历的时候 用 setSynflag (false) 将 定时器锁住 使它不会增加list中的值
遍历中的值不会直接删掉 用一个list记录 遍历完毕统一删除





但还是出现这个错误 list在遍历的时候明明已经不能变化了


使用了安全线程的CopyOnWriteArrayList也没有用

项目下载地址
http://pan.baidu.com/s/1pJBcpmz

这是我自己兴起写的一个程序 希望能有人帮我看看调试一下 谢谢了





...全文
180 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
asia_deng 2014-07-11
  • 打赏
  • 举报
回复
引用 1 楼 u014448521 的回复:
出现这个问题的原因是你用了 for(xxx :xxx)格式的循环 改成for(int i = xxx;xxx;xxx)就不会报这个错误了
是的,以前喜欢用for(xxx :xxx)格式的遍历,时不时的出现ConcurrentModificationException 后来改成for(int i = xxx;xxx;xxx)就不会了
zyl9241 2014-07-11
  • 打赏
  • 举报
回复
出现这个问题的原因是你用了 for(xxx :xxx)格式的循环 改成for(int i = xxx;xxx;xxx)就不会报这个错误了

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧