Android консолидации взглядов в том, чтобы включить заявления, улучшить производительность?

Я оптимизирую свои макеты Android. Одно из предложений, которое я получил, было повторно использовать макеты в include заявления. Хотя я понимаю полезность этого, что-то вроде объектно-ориентированных представлений, но значительно ли это улучшает время рендеринга? Значительно ли это уменьшает объем памяти? Сохраняет ли это иерархию представления меньше?

Я написал это, предполагая, что был определенный ответ на это, а не обсуждение

спасибо за понимание!

2 ответа

Решение

Значительно ли это уменьшает объем памяти?

Нет. Вот представление, которое включает в себя два представления с одинаковым содержанием. Хотя представления одинаковы, каждый элемент представления должен быть представлен как отдельный экземпляр, поскольку разработчик может захотеть выбрать его с помощью R.id.identifier и изменить его содержимое. Практически, допустим, вы включили заголовок для своего приложения в 2 разных представлениях. Содержимое заголовка не обязательно должно быть одинаковым в каждом представлении. Поскольку экземпляры разные, в памяти нет экономии.

Скриншот

это значительно улучшает время рендеринга?

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

Вот соответствующая ссылка по оптимизации производительности на Android, если вы ее еще не видели -> http://developer.android.com/training/articles/perf-tips.html

С помощью include одного, вероятно, недостаточно, чтобы привести к заметным изменениям времени рендеринга. Это также не должно влиять на иерархию представлений: вы должны получить одну и ту же иерархию независимо от того, включены ли ее части из раздутого макета.

полагаю, что LayoutInflater может кэшировать недавно завышенные ресурсы, потенциально ускоряя раздувание разметки, которая состоит из недавно использованных included куски. Но это кажется маловероятным, и если вы не протестировали его в своем приложении, это было бы ненужной микро-оптимизацией IMO.)

Какие include это хорошо для организации ваших раскладок, в частности, для разборки многоразовых фрагментов. Ромэн Гай, автор большей части системы макетов Android, несколько лет назад написал сообщение в блоге, в котором демонстрирует некоторые советы и приемы, которые можно использовать, включая, например, использование его для отделения макетов, чувствительных к ориентации, от более общих.

В отличие от этого, ViewStub предназначен для оптимизации времени надувания макета; это позволяет лениво раздувать части вашей иерархии View.

Другие вопросы по тегам