onDraw()方法中的最终变量

时间:2011-07-06 22:32:19

标签: java android final micro-optimization

我有一个扩展View的类并覆盖onDraw(Canvas canvas)方法。此视图运行动画,因此onDraw将每秒调用多次。请考虑以下示例...

@Override
protected void onDraw(Canvas canvas) {
  final int width = getWidth();
  final int height = getHeight();

  final int padLeft = getPaddingLeft();
  final int padTop = getPaddingTop();
  final int padRight = getPaddingRight();
  final int padBottom = getPaddingBottom();

  final RectF oval = new RectF(padLeft, padTop, width - padRight, height - padBottom);
  ...
}

每次调用onDraw时,我是否应该担心会发生这么多函数调用? final是否告诉编译器每次都不需要调用这些函数?这些变量会更好地作为member variables,以便只调用一次函数吗?

P.S。我知道在运行我的程序时性能不会受到影响。我从学习的角度问这个问题。当我确切知道自己在做什么时,这让我感觉更好。

1 个答案:

答案 0 :(得分:0)

在这里说到最后你只是说这个局部变量在这个函数中不会改变,每次调用onDraw时都会调用函数。 如果可能的话,最好将所有这些变量组合到另一个类,如DisplayProperties,并仅将其初始化一次。