asyncTask 更新 OpenGL ES 使用的静态值
我正在编写一个包含 asyncTask
的应用程序,它连续(每隔几秒左右)向 ArrayList
添加一个值(声明为 static
) 。
该值是我想要绘制的以英寸为单位的度量。 为了做到这一点,我使用 OpenGL ES 实现了一个解决方案。 每次添加新值时,我的 AsynTask 都会调用 requestRender() 方法。 然后,drawRenderer()
获取 ArrayList
并用它绘制线条。
此时一切都工作得很好。
我还希望用户可以捏缩放和移动绘图。所以我有一个 TouchsurfaceView ,它也会在需要时调用 requestRender() 。 大多数时候它都能工作,但有时我会因为并发请求 ArrayList
有什么想法我该如何解决这个问题?我看到 lock
和 synchronized
内容,但无法找到如何在我的案例中正确使用它们。
感谢您阅读我的内容。
I m writing an app containing an asyncTask
which continuously (every seconds or so) adds a value to an ArrayList<Float>
(declared static
).
The value is a measure in inches that I want to plot.
In order to do that I have implemented a solution with OpenGL ES.
And every time I add a new value my AsynTask
calls the requestRender()
method.
Then the drawRenderer()
take the ArrayList<Float>
and draw lines with it.
At this point everything works perfectly fine.
I also want that the user can pinch-zoom and move the plot. So I have a TouchsurfaceView
which also calls requestRender()
when needed.
Most of the time it works, but time to time I get an error because of concurrent requests for the ArrayList<Float>
(almost sure of that).
Any ideas How can I solve this ? I see lock
and synchronized
stuff, but can t find how to properly use them for my case.
Thanks for reading me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将所有对静态变量的更新放在同步静态方法中,并仅使用该方法进行更新。
put all the updates to the static variable in a synchronized static method and use only that for making updates.