假设您在invalidate()
上使用了View
,也许您可以尝试使用其中一个other?理论上,这只会重绘受影响的(脏)区域。
void invalidate(Rect dirty)
void invalidate(int l, int t, int r, int b)
void invalidateDrawable(Drawable drawable)
另见this视频(34:07左右)。他们有一个很好的小演示,详细描述了这一点。
这是正常的吗?
是
因为这是一个很大的性能问题
使用Traceview来确定性能瓶颈所在。
或者,可能确实使用layers。
或者,如果您正在创建游戏或其他内容,请不要使用窗口小部件框架,而是直接绘制到Canvas
(或使用OpenGL)。