asyncTask обновляет статическое значение, которое используется OpenGL ES - PullRequest
1 голос
/ 09 сентября 2011

Я пишу приложение, содержащее asyncTask, которое непрерывно (каждые секунды или около того) добавляет значение к ArrayList<Float> (объявлен static).

Значение - это мера в дюймах, которую я хочу построить. Для этого я реализовал решение с OpenGL ES . И каждый раз, когда я добавляю новое значение, мой AsynTask вызывает метод requestRender(). Затем drawRenderer() возьмите ArrayList<Float> и проведите с ним линии.

На данный момент все отлично работает.

Я также хочу, чтобы пользователь мог масштабировать и перемещать график. Итак, у меня есть TouchsurfaceView, который также вызывает requestRender(), когда это необходимо. В большинстве случаев это работает, но время от времени я получаю сообщение об ошибке из-за одновременных запросов на ArrayList<Float> (почти наверняка).

Есть идеи, как мне это решить? Я вижу вещи lock и synchronized, но не могу найти, как правильно использовать их для моего случая.

Спасибо, что читаете меня.

1 Ответ

2 голосов
/ 09 сентября 2011

поместите все обновления статической переменной в синхронизированный статический метод и используйте только это для создания обновлений.

...