Android crash之ConcurrentModifica

2020-04-20  本文已影响0人  落后程序员

zxing的view出异常

java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
    at java.util.HashMap$KeyIterator.next(HashMap.java:1466)
    at com.xxxx.zxing.view.ViewfinderView.onDraw(ViewfinderView.java:231)
    at android.view.View.draw(View.java:20483)
    at android.view.View.updateDisplayListIfDirty(View.java:19294)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4375)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4348)
    at android.view.View.updateDisplayListIfDirty(View.java:19254)

简单优化

Collection<ResultPoint> currentPossible = possibleResultPoints;
            Collection<ResultPoint> currentLast = lastPossibleResultPoints;
            if (currentPossible.isEmpty()) {
                lastPossibleResultPoints = null;
            } else {
                possibleResultPoints = new HashSet<>(5);
                lastPossibleResultPoints = currentPossible;
                paint.setAlpha(OPAQUE);
                paint.setColor(resultPointColor);
                try {
                    for (ResultPoint point : currentPossible) {
                        canvas.drawCircle(frame.left + point.getX(), frame.top
                                + point.getY(), 6.0f, paint);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (currentLast != null) {
                paint.setAlpha(OPAQUE / 2);
                paint.setColor(resultPointColor);
                try {
                    for (ResultPoint point : currentLast) {
                        canvas.drawCircle(frame.left + point.getX(), frame.top
                                + point.getY(), 3.0f, paint);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
上一篇 下一篇

猜你喜欢

热点阅读