1

在我的 android 应用程序中,我绘制了很多矩形、线条和弧线,这些矩形、线条和弧线经常随着用户操作而改变。

现在我所做的是在 onDraw() 方法中创建我的 Paint 对象,以便它们保持局部变量并且不会导致任何内存问题。

但在代码审查期间,这被指出是一个错误。我被告知这可能会减慢画布上的绘图速度,因为每次调用 onDraw() 都会调用 new()。因此,我被要求将 Paint 对象作为类变量,仅将它们初始化一次,并且仅在 onDraw() 中更改它们的属性,并在屏幕关闭/销毁时进一步使它们无效。

我想问这是正确的做法还是事情已经变得更好了,因为我没有发现我的屏幕上的 UI 很慢,我怀疑这可能是不必要的更改。

请提供建议。

4

2 回答 2

2

我发现Paint paint = new Paint();onDraw()处理过程中存在延迟。我现在创建paint一个类变量,并onDraw()简单地修改已经构建的 Paint 变量的属性。

    public void onDraw(Canvas canvas) {
        mPaint.setColor(Color.BLUE);
        ...
        mPaint.setStyle(Style.FILL); 
        ...
    }
于 2013-01-03T12:06:16.473 回答
1

是的,您应该使用 Paint 作为类成员。Paint的大小可能很小,我没有检查过,但它只是一个设置容器。

在 Draw 中分配任何对象是一个坏主意,因为它可能会导致 GC 启动并导致非常明显的故障,尤其是在旧设备上。

于 2013-01-03T12:08:45.800 回答