簡體   English   中英

使用Asynctask(ANDROID)解決ConcurrentModificationException問題

[英]Solving ConcurrentModificationException problem with Asynctask (ANDROID)

我得到一個ConcurrentModificationException(ArrayList)異常,我不知道如何解決它,因為異常非常罕見,不可重現。

情況:我有一個主線程:

for(Element element : myList){
    Value value = element.getValue(); <-------- ConcurrentModificationException (ArrayList)
}

和AsyncTask:

public class LoadMapObjectsTask extends AsyncTask<String, String, String> {
    protected String doInBackground(String... params) {
        // some other logic
        myList.remove(element);
    }
}

我能理解沖突,但我不確定如何正確地預防沖突。 也許用簡單的同步{}? 我怎么解決這個問題?

也許您可以更改代碼以返回特定值,該值可以被識別為使用Iterator.remove()刪除元素的符號:

Iterator<Element> it = myList.iterator();
while (it.hasNext()) {
  Value value = it.next().getValue()
  if (value == null) {
    it.remove();
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM