Android
Optimisation des performances
Recherche…
Introduction
La performance de vos applications est un élément crucial de l'expérience utilisateur. Essayez d'éviter les problèmes de performances, tels que le travail sur le thread d'interface utilisateur et apprenez comment écrire des applications rapides et réactives.
Enregistrer les recherches avec le modèle ViewHolder
Surtout dans ListView
, vous pouvez rencontrer des problèmes de performances en faisant trop d' findViewById()
pendant le défilement. En utilisant le modèle ViewHolder
, vous pouvez enregistrer ces recherches et améliorer vos performances ListView
.
Si votre élément de liste contient un seul objet TextView
, créez une classe ViewHolder
pour stocker l'instance:
static class ViewHolder {
TextView myTextView;
}
Lors de la création de votre élément de liste, ViewHolder
un objet ViewHolder
à l'élément de liste:
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;
}
Grâce à ce modèle, findViewById()
sera uniquement appelé lors de la création d'une nouvelle View
et le ListView
pourra recycler vos vues beaucoup plus efficacement.