FindViewById против локальной ссылки в Activity

Было бы заметно улучшение скорости, если бы я создал локальные ссылки на нужные элементы представления (например, EditText или Button) в моей активности (в onCreate()) и использовал их для доступа к необходимым элементам, или это не очень важно, если я всегда использую findViewById(), когда мне нужно получить доступ к определенному элементу?

Ответы

Ответ 1

Если вы используете ListActivity, это то, что защищает шаблон View Holder. Я бы сказал, это зависит от того, как часто просмотр становится обновленным.

Здесь видео и pdf от ввода-вывода Google, в котором говорится о реализации шаблона ViewHolder в методе getView ListAdapter

Мир ListView

Ответ 2

Это старый вопрос, но позвольте мне опубликовать свой ответ для всех, кто окажется любопытным, как и я: по крайней мере, на уровне api 17 (4.2.2) DFS (Depth First Search) используется для поиска, и никакой механизм кеширования не существует (означает, что поиск будет повторяться каждый раз, когда вы вызываете findViewById()).

Ответ 3

Это будет улучшение скорости, если у вас сложный макет, и вы слишком часто обращаетесь к этим View. Хорошей практикой является определение частных переменных и привязка их к ссылкам, возвращаемым findViewById один раз в onCreate(), затем доступ к ним по всему вашему коду.

Если вы обращаетесь к этим представлениям только один раз, скажем, добавляя к ним OnClickListeners, я не думаю, что это необходимо для создания локальных ссылок, как вы их называете.