zoukankan      html  css  js  c++  java
  • android详细信息java.util.ConcurrentModificationException变态

    在今天做android当项目,我遇到了这个异常,好吧。其实最不寻常遇到异常IllegalstateException。它们与我们的硬件连接SDK抛出,我想折磨学生阿玉啊。扯远了。

    今天,我想回到这个异常。java.util.ConcurrentModificationException异常,一開始我愣了一下。貌似从来没遇到过这个,然后果断百度大神。这才发现:

    原因是你遍历该集合时。对该集合进行了删除元素的操作导致的。假设你有删除元素的必要,建议赋值到还有一个集合,然后对他进行删除操作.

    偶出现错误的地方:

    if (serverCards != null) {
    			for (PaymentCard serverCard : serverCards) {
    				MstCard matchingMstCard = findMatchingMstCard(serverCard,
    						mstCards);
    				ChargecaseCard matchingChargecaseCard = findMatchingChargecaseCard(
    						serverCard, chargecaseCards);
    				if (matchingMstCard != null && matchingChargecaseCard != null) {
    					matchingMstCard.setDominantColor(serverCard
    							.getDominantColor());
    					matchingChargecaseCard.setDominantColor(serverCard
    							.getDominantColor());
    					unifiedCards.add(new UnifiedCard(matchingMstCard,
    							serverCard, matchingChargecaseCard));
    					mstOnlyCards.remove(matchingMstCard);
    					chargecaseOnlyCards.remove(matchingChargecaseCard);
    				} else if (matchingMstCard != null
    						&& matchingChargecaseCard == null) {
    					matchingMstCard.setDominantColor(serverCard
    							.getDominantColor());
    					unifiedCards.add(new UnifiedCard(matchingMstCard,
    							serverCard));
    					mstOnlyCards.remove(matchingMstCard);
    				} else if (matchingMstCard == null
    						&& matchingChargecaseCard != null) {
    					matchingChargecaseCard.setDominantColor(serverCard
    							.getDominantColor());
    					unifiedCards.add(new UnifiedCard(serverCard,
    							matchingChargecaseCard));
    					chargecaseOnlyCards.remove(matchingChargecaseCard);
    				} else {
    					serverOnlyCards.add(serverCard);
    				}
    			}
    		}
    
    		for (MstCard card : mstOnlyCards) {
    			ChargecaseCard matchingChargecaseCard = findMatchingChargecaseCard(
    					card, chargecaseCards);
    			if (matchingChargecaseCard != null) {
    				matchingChargecaseCard
    						.setDominantColor(card.getDominantColor());
    				unifiedCards.add(new UnifiedCard(card, null,
    						matchingChargecaseCard));
    				chargecaseOnlyCards.remove(matchingChargecaseCard);
    			} else {
    				unifiedCards.add(new UnifiedCard(card));
    			}
    		}
    
    		for (ChargecaseCard card : chargecaseOnlyCards) {
    			unifiedCards.add(new UnifiedCard(card));
    		}
    
    		for (PaymentCard card : serverOnlyCards) {
    			unifiedCards.add(new UnifiedCard(card));
    		}
    
    		return unifiedCards;
    在一个for循环中mstOnlyCards调用了,mstOnlyCards.remove()方法。


    特记录之,引以为戒。


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    Android 解决小米手机Android Studio安装app 报错的问题It is possible that this issue is resolved by uninstalling an existi
    Android Unresolved Dependencies
    Android studio 自定义打包apk名
    Android Fragment与Activity交互的几种方式
    魅族和三星Galaxy 5.0webView 问题Android Crash Report
    Android几种常见的多渠道(批量)打包方式介绍
    Android批量打包 如何一秒内打完几百个apk渠道包
    上周热点回顾(9.30-10.6)团队
    上周热点回顾(9.23-9.29)团队
    上周热点回顾(9.16-9.22)团队
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4806166.html
Copyright © 2011-2022 走看看