asyncTask 更新 OpenGL ES 使用的静态值

发布于 2024-12-03 17:39:13 字数 611 浏览 0 评论 0原文

我正在编写一个包含 asyncTask 的应用程序,它连续(每隔几秒左右)向 ArrayList 添加一个值(声明为 static) 。

该值是我想要绘制的以英寸为单位的度量。 为了做到这一点,我使用 OpenGL ES 实现了一个解决方案。 每次添加新值时,我的 AsynTask 都会调用 requestRender() 方法。 然后,drawRenderer() 获取 ArrayList 并用它绘制线条。

此时一切都工作得很好。

我还希望用户可以捏缩放和移动绘图。所以我有一个 TouchsurfaceView ,它也会在需要时调用 requestRender() 。 大多数时候它都能工作,但有时我会因为并发请求 ArrayList而收到错误(几乎可以肯定)。

有什么想法我该如何解决这个问题?我看到 locksynchronized 内容,但无法找到如何在我的案例中正确使用它们。

感谢您阅读我的内容。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心碎的声音 2024-12-10 17:39:13

将所有对静态变量的更新放在同步静态方法中,并仅使用该方法进行更新。

put all the updates to the static variable in a synchronized static method and use only that for making updates.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文