0
我有一个类扩展了View
并覆盖了onDraw(Canvas canvas)
方法。该视图运行动画,因此onDraw
将每秒调用多次。请看下面的例子...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.从运行我的程序我知道,性能不受影响。我从学习的角度提出这个问题。当我知道自己在做什么时,这让我感觉更好。
是的,但我相当肯定final关键字还暗示编译器可以对变量进行优化。 – dfetter88
你说什么意思优化。不,它不能代替函数调用。是的,不需要从主存储器重新加载这些变量。更多这里http://stackoverflow.com/questions/6602922/is-it-faster-to-access-final-local-variables-than-class-variables-in-java –
很高兴知道。所以避免函数调用的唯一方法是通过创建成员变量? – dfetter88