2015-03-22 6 views
3

Я был готов некоторые статьи об оптимизации производительности для макетов Android. Большинство из них рекомендуют использовать RelativeLayout с другими макетами, потому что это может помочь вам избежать вложенных макетов, которые потребляют память.Каковы недостатки RelativeLayout

Лично я считаю, что каждая вещь имеет свои преимущества и недостатки. Но я не мог понять недостатки RelativeLayout s по разным типам макетов.

В чем недостатки RelativeLayouts?

Когда мне следует избегать использования RelativeLayouts?

Заранее спасибо.

+0

AFAIK нет недостатка в использовании RelativeLayout! Скорее я бы сказал, что лучше среди всех макетов, вы можете поместить свои компоненты в нужную позицию. – Apurva

+0

Я считаю, что есть, по крайней мере, эта ссылка, говорящая, что ** Относительные макеты включают дополнительный проход для измерения, но рекомендуется ** ... http://blog.echolocker.com/performance –

ответ

3

Для меня RelativeLayout слишком много времени, если вы должны реорганизовать свои компоненты. Это самый большой недостаток.

По этой причине я бы сказал, что RelativeLayout действительно хорош как макет верхнего уровня, так и макет нижнего уровня. Но макеты среднего уровня лучше обслуживаются с использованием шаблона taylored (Linear, Table ...).

Например, при создании формы самая верхняя компоновка моей деятельности или фрагмента будет RelativeLayout, но моя форма будет создана как один большой вертикальный LinearLayout. И внутри этого Linear каждая строка будет RelativeLayout, в которой у меня будет Text View и Edit Text.

Таким образом, я могу очень легко отсортировать поля своей формы и (я думаю). Я сохраняю свою память макета дружественной, не злоупотребляя вложенным LinearLayout.

3

Относительная компоновка является наиболее часто используемой компоновкой в ​​большинстве случаев и по моему опыту, без ущерба для этого макета. Как я уже сказал, выбирайте, какая из них лучше подходит для работы, и беспокоиться о производительности позже.

обновление:

Я скопировал комментарий от Is a RelativeLayout more expensive than a LinearLayout?

В докладе на Google I/O 2013 (Запись пользовательских представлений для Android), Romain Guy выяснены недоразумение, вызвавший всем начала используя RelativeLayouts для всего. A RelativeLayout всегда должен выполнить два прохода. В целом это незначительно, если ваша иерархия представлений проста. Но если ваша иерархия сложная, выполнение дополнительного шага потенциально может быть довольно дорогостоящим. Также, если вы используете гнездо RelativeLayouts, вы получаете экспоненциальный алгоритм измерения.

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s

https://developers.google.com/events/io/sessions/325615129

+0

Спасибо за эту общую информацию.Но я все это знаю. Я спрашиваю о механизме «RelativeLayout», и случаи, когда использование этого не рекомендуется. –

+1

Относительная компоновка является наиболее часто используемой компоновкой в ​​большинстве случаев и по моему опыту, без ущерба для этого макета. Как я уже сказал, лучше всего подходит для работы, и беспокоиться о производительности позже. Если вы действительно очень обеспокоены недостатком, производительностью и т. Д., Вы можете прочитать http://stackoverflow.com/questions/4069037/android-is-a-relativelayout-more-expensive-than-a-linearlayout –

+0

Это полезная ссылка. Измените свой ответ и добавьте его в него с описанием для людей. –