同步Android画布Surfaceview

同步Android画布Surfaceview,android,canvas,surfaceview,synchronized,lag,Android,Canvas,Surfaceview,Synchronized,Lag,我正在开发一款android canvas游戏,在绘制主游戏表单时,我注意到了一个延迟。它是在我开始在不同的部分喷洒synchronized(surfaceHandler)之后开始的,目的是为了对抗并发数组修改。我同步过度了吗?何时同步、何时不同步以及何时修改可见数据的经验法则是什么 也有可能是由其他原因引起的吗?绘制方法在发生这种情况时执行,但不可能进行触摸交互(触摸方法的大部分(如果不是全部)是同步的) 建议?我认为,只要从一个区域的曲面支架生成画布,就不必同步。这可能是也可能不是导致延迟峰

我正在开发一款android canvas游戏,在绘制主游戏表单时,我注意到了一个延迟。它是在我开始在不同的部分喷洒
synchronized(surfaceHandler)
之后开始的,目的是为了对抗并发数组修改。我同步过度了吗?何时同步、何时不同步以及何时修改可见数据的经验法则是什么

也有可能是由其他原因引起的吗?绘制方法在发生这种情况时执行,但不可能进行触摸交互(触摸方法的大部分(如果不是全部)是同步的)


建议?

我认为,只要从一个区域的曲面支架生成画布,就不必同步。这可能是也可能不是导致延迟峰值的原因。如果在多个线程中使用surfaceHandler,则可能需要将所有图形压缩为一个线程,或者需要保持同步。

我认为,只要在一个区域中从曲面保持器生成画布,就不必同步。这可能是也可能不是导致延迟峰值的原因。如果在多个线程中使用surfaceHandler,可能需要将所有绘图压缩为一个线程,或者需要保持同步。

我只在一个点的一个线程上绘图,问题是我正在修改正在绘制的其他集合,导致并发的集合修改。这些应该同步吗?十个小同步是否比一个大同步更好/更差/相同?我认为十个“小”同步的开销比一个“大”同步更糟糕,大和小(我假设)对应于所做更改的数量。您还可以在访问数据结构时将其设计为更新,但不能使用迭代器:)。我只在一个点上绘制一个线程,问题是我正在修改正在绘制的其他集合,从而导致并发的集合修改。这些应该同步吗?十个小同步是否比一个大同步更好/更差/相同?我认为十个“小”同步的开销比一个“大”同步更糟糕,大和小(我假设)对应于所做更改的数量。您还可以将数据结构设计为在访问时更新,但不能使用迭代器:)。