Android
Optymalizacja wydajności
Szukaj…
Wprowadzenie
Wydajność aplikacji jest kluczowym elementem komfortu użytkowania. Staraj się unikać niewłaściwych wzorców, takich jak wykonywanie pracy w wątku interfejsu użytkownika i naucz się pisać szybkie i responsywne aplikacje.
Zapisz Przeglądaj odnośniki za pomocą wzorca ViewHolder
Zwłaszcza w ListView
możesz napotkać problemy z wydajnością, wykonując zbyt wiele findViewById()
podczas przewijania. Używając wzorca ViewHolder
, możesz zapisać te wyszukiwania i poprawić swoją wydajność ListView
.
Jeśli element listy zawiera pojedynczy TextView
, utwórz klasę ViewHolder
do przechowywania instancji:
static class ViewHolder {
TextView myTextView;
}
Podczas tworzenia elementu listy dołącz obiekt ViewHolder
do elementu listy:
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;
}
Korzystając z tego wzorca, findViewById()
będzie wywoływany tylko wtedy, gdy tworzony jest nowy View
, a ListView
może znacznie wydajniej przetwarzać twoje widoki.