Android
Оптимизация производительности
Поиск…
Вступление
Производительность ваших приложений является ключевым элементом пользовательского интерфейса. Старайтесь избегать плохих моделей, таких как работа над потоком пользовательского интерфейса и научиться писать быстрые и гибкие приложения.
Сохранить просмотр с помощью шаблона ViewHolder
Особенно в ListView
вы можете столкнуться с проблемами производительности, выполняя слишком много вызовов findViewById()
во время прокрутки. Используя шаблон ViewHolder
, вы можете сохранить эти поисковые запросы и улучшить производительность ListView
.
Если элемент списка содержит один TextView
, создайте класс ViewHolder
для хранения экземпляра:
static class ViewHolder {
TextView myTextView;
}
При создании элемента списка присоедините объект ViewHolder
к элементу списка:
public View getView(int position, View convertView, ViewGroup parent) {
Item i = getItem(position);
if(convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
// Create a new ViewHolder and save the TextView instance
ViewHolder holder = new ViewHolder();
holder.myTextView = (TextView)convertView.findViewById(R.id.my_text_view);
convertView.setTag(holder);
}
// Retrieve the ViewHolder and use the TextView
ViewHolder holder = (ViewHolder)convertView.getTag();
holder.myTextView.setText(i.getText());
return convertView;
}
Используя эту модель, findViewById()
будет вызываться только тогда , когда новый View
создаются и ListView
может гораздо более эффективно переработать свои взгляды.