我有一个代码在ArrayMap键上进行迭代,并且由于未知原因导致数组索引超出界限异常

从Crashalytics:

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException
length=56; index=56
android.util.ArrayMap$1.colGetEntry (ArrayMap.java:763)
android.util.MapCollections$ArrayIterator.next (MapCollections.java:55)


代码如下所示:

private ArrayMap<String,RequestData> handlers = new ArrayMap<>();

public void removeAllHandlers() {
    synchronized (handlers) {
        for (String s : handlers.keySet()) {
            handlers.remove(s);
        }
    }
}


异常发生在此行:for (String s : handlers.keySet())

任何线索我在做什么错?

最佳答案

迭代时无法从MapList中删除​​。
使用Map / List的内部清除方法。
例如,handlers.clear();

码:

private ArrayMap<String,RequestData> handlers = new ArrayMap<>();

public void removeAllHandlers() {
        synchronized (handlers) {
                handlers.clear();
        }
    }

10-05 21:26