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, я не думаю, что это необходимо для создания локальных ссылок, как вы их называете.