我正在尝试迭代一个hashmap,并在迭代过程中使用该键。我决定在异步任务中使用它,因为迭代阻止了我的UI线程。
我的hashmap将LatLng作为Key,将Marker作为Object,当我在迭代期间获取密钥并将其传递给一个工作正常的新LatLng但是当我尝试使用这个新的LatLng时,我得到一个{{1}异常。奇怪的是,当我使用没有AsyncTask的代码
时,这不会发生这是我的代码
java.util.ConcurrentModificationException
答案 0 :(得分:1)
从Android 1.6到Android HoneyComb,异步任务以并行模式运行。这意味着不同的线程。在某些情况下,您可能会多次调用异步任务,并且可能会尝试访问相同的HashMap以进行迭代。您可以使用“ConcurrentHashMap”而不是HashMap来避免此异常。但正确的方法是确定异步任务是否多次调用,并尝试避免它在那里。如果您尝试使用Hashmap进行操作,而异步任务虽然相同,也会发生这种情况。如果是这种情况使用“ConcurrentHashMap”,它是线程安全的。