在我的Android应用程序中,我绘制了大量的矩形,直线和放大器弧 经常改变用户行为。
现在我所做的是在onDraw()方法中创建了Paint对象 这样它们仍然是局部变量而不会引起任何内存问题。
但在代码审查期间,这被指出是一个错误。 我被告知这可能会减慢画布上的绘图速度,因为每次都会调用new() onDraw()被调用。所以我被要求将Paint对象作为类变量,只将它们初始化一次,只在onDraw()中更改它们的属性,并在屏幕关闭/销毁时进一步使它们无效。
我想问一下,这是正确的做法,或者事情比现在更好,因为我没有在屏幕上发现UI慢,我怀疑这可能是一个不必要的改变。
请提供建议。
答案 0 :(得分:2)
我发现在Paint paint = new Paint();
处理过程中onDraw()
存在延迟。我现在使paint
成为一个类变量,并在onDraw()
中简单地修改已经构造的Paint变量的属性。
public void onDraw(Canvas canvas) {
mPaint.setColor(Color.BLUE);
...
mPaint.setStyle(Style.FILL);
...
}
答案 1 :(得分:1)
是的,您应该使用Paint作为类成员。 Paint的大小可能很小,不是我已经检查过的,但它只是一个设置容器。
在Draw中分配任何对象是一个坏主意,因为它可能导致GC启动并导致非常明显的故障,尤其是在较旧的设备上。