Android
Prestationsoptimering
Sök…
Introduktion
Din Apps-prestanda är en avgörande del av användarupplevelsen. Försök att undvika mönster med dåligt resultat som att göra arbete på UI-tråden och lära dig att skriva snabba och lyhörda appar.
Spara View-uppslag med ViewHolder-mönstret
Speciellt i en ListView
kan du ListView
på prestandaproblem genom att göra för många findViewById()
under rullning. Genom att använda ViewHolder
mönstret kan du spara dessa sökningar och förbättra ListView
prestanda.
Om ditt listobjekt innehåller en enda TextView
, skapar du en ViewHolder
klass för att lagra instansen:
static class ViewHolder {
TextView myTextView;
}
ViewHolder
ett ViewHolder
objekt till ViewHolder
när du skapar ditt 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;
}
Med hjälp av detta mönster kommer findViewById()
bara att findViewById()
när en ny View
skapas och ListView
kan återvinna dina vyer mycket mer effektivt.