Android
Ottimizzazione delle prestazioni
Ricerca…
introduzione
Le prestazioni delle tue app sono un elemento cruciale dell'esperienza utente. Cerca di evitare schemi di cattiva esecuzione come lavorare sul thread dell'interfaccia utente e imparare come scrivere applicazioni veloci e reattive.
Salvare le ricerche View con il pattern ViewHolder
Soprattutto in un ListView
, è possibile incorrere in problemi di prestazioni facendo troppe chiamate findViewById()
durante lo scorrimento. Utilizzando il pattern ViewHolder
, è possibile salvare queste ricerche e migliorare le prestazioni di ListView
.
Se la tua voce di elenco contiene un singolo TextView
, crea una classe ViewHolder
per memorizzare l'istanza:
static class ViewHolder {
TextView myTextView;
}
Durante la creazione dell'elemento della lista, allegare un oggetto ViewHolder
alla voce dell'elenco:
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;
}
Utilizzando questo modello, findViewById()
verrà chiamato solo quando viene creata una nuova View
e ListView
può riciclare le visualizzazioni in modo molto più efficiente.