Конечные переменные в методе onDraw () - PullRequest
0 голосов
/ 07 июля 2011

У меня есть класс, который расширяет 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, чтобы функции вызывались только один раз?

PS Я знаю, что при запуске моей программы производительность не страдает.Я задаю этот вопрос с точки зрения обучения.Мне становится лучше, когда я точно знаю, что делаю.

1 Ответ

0 голосов
/ 07 июля 2011

, говоря здесь final, вы просто говорите, что эта локальная переменная не будет изменена в этой функции, и функции будут вызываться каждый раз, когда вы вызываете onDraw.Если это возможно, лучше скомпоновать все эти переменные в другой класс, например DisplayProperties, и инициализировать его только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...