2011-07-08 10 views
6

Tengo una vista personalizada que estoy intentando mostrar, sin embargo, veo un montón de inestabilidad en ella. Todo se desplaza lentamente y no es tan receptivo como debería ser.GLES20Canvas.nDrawDisplayList es lento

que utilizan traceview y vio que

GLES20Canvas.nDrawDisplayList

parece responsable de tomar una gran cantidad de tiempo para ejecutarse.

¿Alguna ayuda, por favor?

Respuesta

3

GLES20Canvas.nDrawDisplayList se espera que tenga una gran parte del tiempo si está dibujando mucho, especialmente vistas muy grandes. Si está viendo esto en toda la vista de rastreo, la respuesta es "DIBUJAR MENOS"

En mi problema específico, estaba dibujando una capa alfa grande en vistas grandes. Yo recomendaría leer lo que se debe y no se debe hacer desde Android 3.0 Hardware Acceleration by Romain Guy

+5

He realizado este análisis en diferentes dispositivos para las mismas actividades, fragmentos y vistas. Solo veo el gran retraso en nDrawDisplayList en el HTC one device (http://stackoverflow.com/a/21791909/546901). Las personas de otros hilos informan que este resultado de rastreo es específico del dispositivo (https://code.google.com/p/android/issues/detail?id=22514). Otros dispositivos tienen resultados saludables de seguimiento. Parece que es probable que sea un problema de dispositivo o de nivel de sistema operativo. La mayoría de las personas parecen observarlo en ScrollView o ListView. –

+1

Estoy usando Galaxy S4 para probar, la aceleración de hardware está activada de manera predeterminada (Target API Level 19), al poner 'android: layerType =" software "' en mi 'GridView' la renderización realmente se aceleró. Nota: no use esto como solución final, intente encontrar la causa raíz. – TWiStErRob