Рециркуляция просмотров в виде списка, стоит ли? - PullRequest
8 голосов
/ 29 сентября 2010

При переопределении baseadapter в просмотре списка Android, вы должны реализовать этот метод public View getView(int position, View convertView, ViewGroup parent).Представление convertview - это представление, которое ранее было перемещено из списка при прокрутке, и оно дано для того, чтобы вы могли повторно использовать это представление вместо создания нового представления.

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

Я думаю, мой вопрос - почему Google решил сделать это поведением по умолчанию getView метод?

Ответы [ 2 ]

13 голосов
/ 29 сентября 2010

Несколько причин перезапустить представления:

  • Создание объекта относительно дорого.Каждый дополнительный объект, который создается, должен обрабатываться системой сборки мусора, и, по крайней мере, временно увеличивает объем используемой памяти
  • Это более важно для более сложных представлений, но раздувание и размещение объектов представлений может бытьдорого.Чаще всего вы вносите только незначительные изменения в представление в getView, которые не влияют на макет (например, на настройку текста), поэтому вы можете избежать накладных расходов макета.
  • Помните, что Android предназначен длязапускаться в среде с ограниченными ресурсами.
  • Наконец, это уже сделано для вас, и, конечно, это ничего не повредит, так почему бы не использовать его?
7 голосов
/ 29 сентября 2010

Это нужно?Только если вам нравятся дополнительные 30-40 кадров в секунду во время бросков на Nexus One.:) (См. Слайды из http://code.google.com/events/io/2010/sessions/world-of-listview-android.html, слайдов 13-17)

Почему устройство работает так, как не нужно, игнорируя значительную оптимизацию, которая для вас была сделана на 95%

...