Я пишу приложение, содержащее asyncTask
, которое непрерывно (каждые секунды или около того) добавляет значение к ArrayList<Float>
(объявлен static
).
Значение - это мера в дюймах, которую я хочу построить.
Для этого я реализовал решение с OpenGL ES .
И каждый раз, когда я добавляю новое значение, мой AsynTask
вызывает метод requestRender()
.
Затем drawRenderer()
возьмите ArrayList<Float>
и проведите с ним линии.
На данный момент все отлично работает.
Я также хочу, чтобы пользователь мог масштабировать и перемещать график. Итак, у меня есть TouchsurfaceView
, который также вызывает requestRender()
, когда это необходимо.
В большинстве случаев это работает, но время от времени я получаю сообщение об ошибке из-за одновременных запросов на ArrayList<Float>
(почти наверняка).
Есть идеи, как мне это решить? Я вижу вещи lock
и synchronized
, но не могу найти, как правильно использовать их для моего случая.
Спасибо, что читаете меня.