GLES20Canvas.nDrawDisplayList работает медленно

У меня есть пользовательское представление, которое я пытаюсь отобразить, однако я вижу кучу дрожания. Все прокручивается медленно и не так отзывчиво, как должно быть.

Я использовал traceview и увидел, что

GLES20Canvas.nDrawDisplayList

кажется ответственным за много времени на выполнение.

Любая помощь, пожалуйста?


person Frank Sposaro    schedule 08.07.2011    source источник


Ответы (1)


Ожидается, что GLES20Canvas.nDrawDisplayList будет занимать большую часть времени, если вы много рисуете, особенно очень большие представления. Если вы видите это во всем вашем traceview, ответ будет "DRAW LESS"

В моей конкретной проблеме я рисовал большой альфа-слой поверх больших видов. Я бы порекомендовал прочитать о том, что можно и чего нельзя делать на сайте Android 3.0 Hardware Acceleration. Ромен Ги

person Frank Sposaro    schedule 16.07.2011
comment
Я провел этот анализ на разных устройствах для одних и тех же действий, фрагментов и представлений. Я вижу большую задержку в nDrawDisplayList только на одном устройстве HTC (stackoverflow.com/a/21791909/546901). Люди в других темах сообщают, что этот результат traceview зависит от устройства (code.google. com/p/android/issues/detail?id=22514). Другие устройства имеют здоровые результаты traceview. Похоже, это проблема на уровне устройства или ОС. Большинство людей, кажется, наблюдают это в ScrollView или ListView. - person Brendan Weinstein; 15.02.2014
comment
Я использую Galaxy S4 для тестирования, аппаратное ускорение включено по умолчанию (целевой уровень API 19), при установке android:layerType="software" на моем GridView рендеринг действительно стал быстрее. Примечание: не используйте это как окончательное решение, попытайтесь найти основную причину. - person TWiStErRob; 29.07.2014