【问题标题】:Synchronize Android Canvas Surfaceview同步 Android Canvas Surfaceview
【发布时间】:2012-01-05 05:58:25
【问题描述】:

我正在开发一款 android 画布游戏,并注意到在绘制主游戏表单时出现了滞后现象。它是在我开始在不同部分周围喷洒synchronized(surfaceHandler) 以尝试与并发数组修改作斗争之后开始的。我是否过度同步?关于何时同步、何时不同步以及何时应该修改可见数据的经验法则是什么?

还有可能是其他原因引起的峰值吗?在此过程中会执行 draw 方法,但无法进行触摸交互(如果不是全部,大部分的触摸方法是同步的)。

建议?

【问题讨论】:

    标签: android canvas surfaceview synchronized lag


    【解决方案1】:

    我认为,只要您从一个区域的表面支架生成画布,您就不必同步。这可能会或可能不会导致滞后。如果您在多个线程中使用surfaceHandler,您可能希望将所有绘图压缩到一个线程中,否则您需要保持同步。

    【讨论】:

    • 我只在一个线程上绘制,问题是我正在修改其他地方正在绘制的集合,导致并发集合修改。这些应该同步吗?十个小同步与一个大同步更好/更差/相同吗?
    • 我认为十个“小”同步的开销比一个“大”同步最差,大小(我假设)对应于所做的更改数量。您还可以设计数据结构以在访问它们时进行更新,只是不能使用迭代器:)。
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多