Android
Leistungsoptimierung
Suche…
Einführung
Die Leistung Ihrer Apps ist ein entscheidendes Element der Benutzererfahrung. Vermeiden Sie schlechte Performance-Muster, z. B. Arbeiten am UI-Thread, und lernen Sie, schnell und reaktionsschnelle Apps zu schreiben.
Speichern Sie View-Lookups mit dem ViewHolder-Muster
Insbesondere in einer ListView
können Sie auf Leistungsprobleme ListView
, wenn Sie zu viele findViewById()
Aufrufe während des Bildlaufs findViewById()
. Mit dem ViewHolder
Muster können Sie diese ListView
speichern und die ListView
Leistung verbessern.
Wenn Ihr Listenelement ein einzelnes TextView
enthält, erstellen Sie eine ViewHolder
Klasse, um die Instanz zu speichern:
static class ViewHolder {
TextView myTextView;
}
ViewHolder
Erstellen Ihres Listenelements ein ViewHolder
Objekt an das Listenelement an:
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;
}
Wenn Sie dieses Muster verwenden, wird findViewById()
nur aufgerufen, wenn eine neue View
erstellt wird und die ListView
Ihre Ansichten viel effizienter recyceln kann.