0

我正在制作一个网格 + 瓷砖活动,其中瓷砖需要跨网格移动。网格(和图块)在 UI 的单独线程中的 SurfaceView 上绘制(UI 处理触摸事件并将它们推送到队列中以供网格处理)。

这一切都很好。我有一个工具栏,可以从中拖动图块。工具栏是一个已添加到相关布局(并在 UI 线程上运行)的视图。

无论我使用同步多少次或尝试同时保护画布不被写入,它最终仍然会导致原生 SIGSEV11。

一些潜在的解决方案:

  • 将所有内容放在一个线程中 - 由于触摸与绘图,可能会失败或非常慢
  • 在单个线程中绘制访问画布的所有内容。

这将需要进行可能需要几天时间的大规模更改。

我想知道是否有其他人遇到过类似的问题,以及我是否可以同步访问画布而不会出错。

非常感谢。

4

1 回答 1

0

我只会让一个线程更新屏幕,但您可以让多个线程更新屏幕后面的数据,然后让它们设置一个标志以导致屏幕的实际更新。

于 2011-04-06T16:58:37.267 回答