java.util.ConcurrentModificationException和SharedPreference

时间:2015-09-21 22:43:13

标签: android sharedpreferences

我在崩溃日志中发现了这个崩溃。我不知道它什么时候发生。有人能给我建议是什么原因吗?也许有人有同样的崩溃。

java.util.ConcurrentModificationException
       at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
       at java.util.HashMap$KeyIterator.next(HashMap.java:814)
       at com.android.internal.util.XmlUtils.writeSetXml(XmlUtils.java:350)
       at com.android.internal.util.XmlUtils.writeValueXml(XmlUtils.java:688)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:295)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:264)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:230)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:187)
       at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:597)
       at android.app.SharedPreferencesImpl.access$800(SharedPreferencesImpl.java:51)
       at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:512)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

2 个答案:

答案 0 :(得分:11)

使用SharedPreferences getStringSet方法时,我们已经看到了此异常。此方法返回不应修改的集合。在将SharedPreferences对象序列化为flash时修改此集将产生ConcurrentModificationException。

如果您使用getAll并修改返回的地图,也会发生这种情况。

请参阅documentation

答案 1 :(得分:0)

有人已经回答了这个问题,您可能有兴趣看看: ConcurrentModificationException in Android while accessing Shared Preferences