ArrayMap java.lang.ArrayIndexOutOfBoundsException
阿新 • • 發佈:2019-01-09
錯誤堆疊:
java.lang.ArrayIndexOutOfBoundsException: length=0; index=1
at android.support.v4.util.SimpleArrayMap.indexOf(SimpleArrayMap.java:83)
at android.support.v4.util.SimpleArrayMap.put(SimpleArrayMap.java:381)
示例錯誤程式碼:
final ArrayMap testArrayMap = new ArrayMap(); new Thread("執行緒1"){ @Override public void run() { super.run(); while (true){ testArrayMap.put("aaa","fffff"); } } }.start(); new Thread("執行緒2"){ @Override public void run() { super.run(); while (true){ testArrayMap.clear(); } } }.start();
錯誤原因:
ArrayMap 不支援多行程,請在一個執行緒裡面使用。不然會導致陣列越界。如果想在多執行緒裡面使用,請使用HasTable。
google 的 ArrayMap 本身就沒有支援多執行緒,在最新的support 包裡面,如果你還多執行緒使用ArrayMap,就會throw CME (ConcurrentModificationException)