Я занимаюсь с приложением, в котором у меня есть 2 вида, которые простираются от SurfaceView под названием CanvasView.Android: Обмен списками между двумя потоками
У меня есть левый CanvasView и правый CanvasView. Оба этих CanvasView создают экземпляр UIThread, который простирается от Thread. Сам CanvasView передается в нить, как это:
public void surfaceCreated(SurfaceHolder holder) {
uiThread = new UIThread(this);
uiThread.setRunning(true);
uiThread.start();
}
В каждом CanvasView, OnDraw(), я доступ к списку. Этот список в основном состоит из списка вещей для рисования, которые по существу одинаковы как на левых, так и на правых холстах.
for (CharSequence line : lineList) {
...
..
}
Всякий раз, когда мое приложение необходимо обратить элементы в LineList, он выходит из строя говоря java.util.ConcurrentModificaitonException.
Каков правильный способ «разделить» линейку линий Arraylist между двумя потоками?
спасибо.
Спасибо, что моя проблема была решена с помощью CopyOnWriteArrayList и Erm, не используя столько потоков XD – lppier
Привет @lppier, вы используете CopyOnWriteArrayList в onDraw. У вас нет проблемы с производительностью? –
@JasonChueh ничего не заметил, есть ли альтернатива? – lppier