onDraw() и внутренние переменные
onDraw() и внутренние переменные
Всем привет, в классе View есть метод onDraw(), и если создавать в нем переменные, например "int i = list.size();", то это нормально ?! Ведь в таком случае создается куча временных переменных, которые накапливаются со временем. Если это так, то может быть использовать статичные переменные ?! Или о переменных внутри этого метода не стоит беспокоиться ?!
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: onDraw() и внутренние переменные
если это примитивный тип, то проблем быть не должно. Они внутри метода используют стековую память, которая более быстрая чем хип, при этом все переменные будут очищаться с памяти по выходу с метода. Не знаю, будет ли профит в производительности, если вынести примитивную переменную в поле класса, но думаю что не будет. Всё сказанное относится к примитивным типам.
Объектные типы (например объект Paint) создавайте в других методах или конструкторах, потому тчо операция создания объекта довольно долгая. Лично я использую конструктор.
Объектные типы (например объект Paint) создавайте в других методах или конструкторах, потому тчо операция создания объекта довольно долгая. Лично я использую конструктор.
Re: onDraw() и внутренние переменные
Дело не в создании объекта - большинство объектов, как например, String, создаются быстро. Дело в том, что после выхода из функции они отправляются в мусор, а сборка мусора - это медленно.
Иногда объекты создаются неявно, напр. int превращается в Integer или итератор при просмотре списка.
Иногда объекты создаются неявно, напр. int превращается в Integer или итератор при просмотре списка.
Re: onDraw() и внутренние переменные
"при этом все переменные будут очищаться с памяти по выходу с метода"
"Дело в том, что после выхода из функции они отправляются в мусор, а сборка мусора - это медленно"
Я именно об этом.. получается что нужно использовать статичные переменные в таких методах ?! а как на счет final переменной в методе ? или это не поможет ?
"Дело в том, что после выхода из функции они отправляются в мусор, а сборка мусора - это медленно"
Я именно об этом.. получается что нужно использовать статичные переменные в таких методах ?! а как на счет final переменной в методе ? или это не поможет ?
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: onDraw() и внутренние переменные
Всё верно. Именно это я и имел ввиду. Но вот и создание объекта тоже является не быстрым занятием, если сравнивать с примитивомmath64 писал(а):Дело не в создании объекта - большинство объектов, как например, String, создаются быстро. Дело в том, что после выхода из функции они отправляются в мусор, а сборка мусора - это медленно.
Иногда объекты создаются неявно, напр. int превращается в Integer или итератор при просмотре списка.
В вашем примере примитивный тип, а не объектный. не путайте это. Для объектов если они создаются и их можно менять, то лучше использовать поля класса. Но если дело касается строк, то тут надо использовать для их конкатенации StruindBuilder, иначе смысла никакого не будет, ибо строки являются неизменяемыми (immutable), и их вынос в поле класса никакого результата не дастЯ именно об этом.. получается что нужно использовать статичные переменные в таких методах ?!