关于java.util.ConcurrentModificationException的错误

android程序运行时,突然挂掉,观察日志显示:

05-21 16:27:16.749 E/AndroidRuntime( 6133): FATAL EXCEPTION: main

05-21 16:27:16.749 E/AndroidRuntime( 6133): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.jrm.tm.keepalive flg=0x14 (has extras) } in com.jrm.tm.cpe.monitor.MonitorComonent$1@41557618
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at android.os.Handler.handleCallback(Handler.java:725)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at android.os.Looper.loop(Looper.java:137)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at android.app.ActivityThread.main(ActivityThread.java:5039)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at java.lang.reflect.Method.invokeNative(Native Method)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at java.lang.reflect.Method.invoke(Method.java:511)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at dalvik.system.NativeStart.main(Native Method)
05-21 16:27:16.749 E/AndroidRuntime( 6133): Caused by: java.util.ConcurrentModificationException
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:569)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at java.util.AbstractCollection.toString(AbstractCollection.java:381)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at java.lang.StringBuilder.append(StringBuilder.java:202)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at com.jrm.tm.cpe.monitor.MonitorComonent.getParameters(MonitorComonent.java:691)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at com.jrm.tm.cpe.monitor.MonitorComonent.keepAliveAction(MonitorComonent.java:657)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at com.jrm.tm.cpe.monitor.MonitorComonent.access$0(MonitorComonent.java:656)
05-21 16:27:16.749 E/AndroidRuntime( 6133):     at com.jrm.tm.cpe.monitor.MonitorComonent$1.onReceive(MonitorComonent.java:137)

05-21 16:27:16.749 E/AndroidRuntime( 6133):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:758)

05-21 16:27:16.749 E/AndroidRuntime( 6133):     ... 9 more


解法:该异常出现原因,也许在遍历list等集合时,不能修改访问该list,则会异常,直接上代码, 创建一个临时变量代替该list。

   Map<String,String> instantHealthTmp=new HashMap<String, String>();
        if(instantHealth!=null){
            instantHealthTmp.putAll(instantHealth);
        }
        
        System.out.println("informHealth:" + informHealth);
        System.out.println("instantHealth:" + instantHealth);
        if( instantHealthTmp != null && !instantHealthTmp.isEmpty() ){
            for( Map.Entry<String, String> tmpMap :instantHealthTmp.entrySet() ){
                ModifiableParameterNode node = new ModifiableParameterNode();
                node.setName(tmpMap.getKey());
                node.setValue(tmpMap.getValue());
                list.add(node);
            }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值