Android
Optimización del rendimiento
Buscar..
Introducción
El rendimiento de su aplicación es un elemento crucial de la experiencia del usuario. Intente evitar los patrones de mal desempeño, como trabajar en el hilo de la interfaz de usuario y aprenda a escribir aplicaciones rápidas y con capacidad de respuesta.
Guardar búsquedas de vista con el patrón ViewHolder
Especialmente en un ListView
, puede tener problemas de rendimiento al hacer demasiadas llamadas findViewById()
durante el desplazamiento. Al usar el patrón ViewHolder
, puede guardar estas búsquedas y mejorar el rendimiento de su ListView
.
Si su elemento de lista contiene un solo TextView
, cree una clase ViewHolder
para almacenar la instancia:
static class ViewHolder {
TextView myTextView;
}
Al crear su elemento de lista, adjunte un objeto ViewHolder
al elemento de lista:
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;
}
Usando este patrón, solo se llamará a findViewById()
cuando se crea una nueva View
y el ListView
puede reciclar sus vistas de manera mucho más eficiente.