Android:使用postInvalidate()或直接调用onDraw?

时间:2014-06-23 01:57:30

标签: java android animation android-canvas ondraw

根据我的理解,可以直接调用onDraw方法,postInvalidate()只需从单独的线程调用onDraw方法。如果我理解正确(如果我错了就纠正我),两者似乎都会产生相同的结果。 postInvalidate()onDraw的直接通话之间是否存在差异?一个人比另一个更好吗?

1 个答案:

答案 0 :(得分:2)

是。调用postInvalidate将画布设置到屏幕并将其传递给onDraw函数以及各种其他逻辑。直接调用onDraw只有在想要将视图绘制到屏幕以外的其他位置时才有意义。

此外,postInvalidate将导致它在控件返回到looper 之后重绘,并将多个原因重新组合成一次重绘。它不会立即尝试绘制。调用onDraw会导致它立即绘制,这可能会导致严重的性能问题。它不会批量绘制请求,导致它重绘多次。

还有其他人,但最终结果是,除非您尝试绘制到非标准画布,否则不要直接调用onDraw-调用invalidate或postInvalidate。