У меня довольно простой список с 3 полями текстового просмотра в каждой строке. Мы обновляем их значения каждые 2 секунды или около того с данными, поступающими из фонового вызова веб-службы (AsyncTask)
Мы сравниваем приходящие значения с текущими, обновляем их соответствующим образом на адаптере и, наконец, вызываем notifyDataSetChanged (), если необходимо
Дело в том, что перерисовка становится очень медленной, что приводит к зависанию всего пользовательского интерфейса, когда мы получаем более трех строк обновления одновременно. Конечно, мы используем все известные оптимизации ListView, такие как подход EfficientAdapter (setTag () и держатели) и getViewTypecount () / getItemViewType (). Мы также пытались максимально оптимизировать наш интерфейс с помощью layoutopt и стараемся избегать ширины и высоты wrap_content, чтобы облегчить ситуацию.
Мы также не делаем дорогостоящих операций с нашими обновлениями, только стандартные вещи: изменение текста TextView, значения textcolor и backgroundcolor.
Единственная странность, которую я вижу, это то, что getView () вызывается 3-4-5 раз для каждой строки, хотя я читал все сообщения Ромена [1], говорящие, что все в порядке с этим
Есть идеи или намеки на то, как мы можем это ускорить?
Большое спасибо!