ConcurrentModificationException при использовании @TypeConverter - PullRequest
0 голосов
/ 04 марта 2020

Я использовал следующий класс для преобразования List для помещения в БД в for l oop, и я получаю ConcurrentModificationException ошибку.

public class ListConverter implements Serializable {
@TypeConverter
public static String fromList(List<Integer> list){
    Gson gson = new Gson();
    String json = gson.toJson(list);
    return json;
}

@TypeConverter
public static List<Integer> fromString(String string){
    Type listType = new TypeToken<List<Integer>>() {}.getType();
    return new Gson().fromJson(string, listType);
}

}

Как я могу решить проблему? enter image description here

1 Ответ

0 голосов
/ 04 марта 2020

Согласно Java документам: This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible. For example, it is not generally permissible for one thread to modify a Collection while another thread is iterating over it

Как я вижу из вашей трассировки стека, асинхронная операция запускается с AppDailyTimingFragment для обновления БД. Если фрагментам принадлежит коллекция, то она может быть изменена основным потоком, пока она обрабатывается другим потоком, который выполняет сериализацию. Это может быть причиной исключения. Я думаю, что защитная копия на уровне фрагментов должна помочь.

...