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