Aceleración de hardware de Android: ¿usar o no usar?


Estoy desarrollando una aplicación que tiene una funcionalidad muy similar a la aplicación nativa de Facebook Android: red social que la mayor parte del tiempo el usuario pasará en un sinfín ListView mostrando muchas imágenes, entrando en una galería de imágenes, y así sucesivamente.

Digamos para la discusión que estoy haciendo todas las cosas correctas y las mejores prácticas de Android para lograr un desplazamiento suave (reciclando las vistas como debería, utilizando diferentes tipos de vistas cuando sea necesario, cargando en la memoria solo mapas de bits escalados en el necesario tamaño, almacenamiento en caché de mapas de bits, utilizando el patrón de diseño ViewHolder, no bloqueando el hilo de la interfaz de usuario cuando es posible y así sucesivamente...)

Digamos también que todo lo demás en mi aplicación escrito de la mejor manera y siguiendo las mejores prácticas (para la discusión... :->)

Mi aplicación no funciona mal en absoluto en esa etapa, pero cuando activar la aceleración de hardware, como se describe y se promete en Documentación para desarrolladores de Android hace que mi aplicación sea mucho más suave y rápida.

Digamos que no afecta de ninguna manera nagativa en la interfaz de usuario como puede suceder, y no estoy realizando ninguna de las Operaciones no soportadas

De acuerdo con el documento de Google sobre el tema, la única razón por la que puedo ver que no use esta función (además de todas las otras razones que ya mencioné anteriormente) es que puede hacer que mi aplicación use más RAM. ¿pero cuánto RAM? mucho más? Sé que cuando mi aplicación consume mucho RAM-se convierte en un buen candidato para ser destruido por el OS cuando necesita liberar algo de memoria.

Mi pregunta es básicamente -

  • ¿está "bien" bajo mis circunstancias usar esta función?
  • ¿qué otros problemas puede plantear su uso?

TIA

Author: Tal Kanel, 2013-05-08

2 answers

Usar o no usar

Se recomienda utilizar la aceleración de hardware solo si tiene cálculos personalizados complejos para escalar, rotar y traducir imágenes, pero no la use para dibujar líneas o curvas (y otras operaciones triviales) ( source).

Si planea tener transiciones comunes y también dado que ya ha considerado escalar, reciclar, almacenar en caché, etc., puede que no tenga sentido cargar más su proyecto. Además, cualquier esfuerzo gastado reelaborar el código para soportar la aceleración de hardware no afectará a los usuarios en las versiones por debajo de 3.0, que son ~36% del mercado a partir del 8 de mayo de 2013.

Memoria

Con respecto al uso de memoria (de acuerdo con este artículo), al incluir Hardware Android, la aplicación carga los controladores OpenGL para cada proceso, toma el uso de memoria de aproximadamente 2 MB y lo aumenta a 8 MB.

Otras cuestiones

Aparte de las versiones de API, supongo que también afectará batería. Desafortunadamente, no hay puntos de referencia en diferentes casos de uso en línea para trazar una línea en este. Algunos argumentan que en determinados casos debido a múltiples núcleos de gpu, el uso de la aceleración puede ahorrar vida de la batería. En general, creo que sería seguro que el efecto no será demasiado dramático (o Google habría hecho de esto un punto importante).

 34
Author: ılǝ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-08 07:31:24

UPDATE

La aceleración de hardware está habilitada de forma predeterminada si el nivel de API de destino is > = 14


Yo diría que sí en su situación, utilice la aceleración de hardware.

Al ver que no está utilizando ningún control de uso intensivo de recursos en su aplicación, no debería ser un problema habilitar la aceleración de hardware. Como dijiste, tu aplicación está funcionando bastante bien sin aceleración de hardware.

Al habilitar la aceleración de hardware, Android comenzará a usar su GPU y debido al aumento de los recursos necesarios para habilitar la aceleración de hardware, su aplicación consumirá más RAM.


Una pregunta frecuente es ¿Aumentará la cantidad de ram en una cantidad realmente grande?

La respuesta a eso será determinada por :

1. Su capacidad de programación es decir. gestión de la lista de reciclaje, escalado de las Imágenes ect.

2. El Dispositivo

Escribí una aplicación hace un tiempo que se utilizó para editar mapas de bits de muy alta resolución. Me encontré con el mismo problema. Descubrí que en diferentes dispositivos la cantidad máxima de ram asignada por el sistema operativo cuando la aceleración de hardware está habilitada varía según el dispositivo. Si su dispositivo tiene más ram, el sistema operativo asignará más ram a su aplicación, por lo que nunca encontrará una cantidad consistente de ram utilizada para su aplicación. Los dispositivos más grandes y caros siempre ejecutarán tu aplicación en una mayor cantidad de ram.


¿ Qué otros problemas pueden surgir al usar ¿aceleración de hardware?

La aceleración de hardware puede causar problemas para algunas operaciones de dibujo 2D. Si experimenta esto, puede habilitar la aceleración de hardware solo para actividades específicas en su aplicación, como se indica en la publicación de Aceleración de hardware en los documentos para desarrolladores de Android

La forma más fácil de habilitar la aceleración de hardware es activarla globalmente para toda la aplicación. Si la aplicación utiliza solo vistas estándar y elementos de diseño, activarla a nivel mundial no debe causar ningún efecto de dibujo adverso. Sin embargo, dado que la aceleración de hardware no es compatible con todas las operaciones de dibujo 2D, activarla puede afectar a algunas de las aplicaciones que utilizan vistas personalizadas o llamadas de dibujo. Los problemas generalmente se manifiestan como elementos invisibles, excepciones o píxeles renderizados incorrectamente. Para remediar esto, Android te da la opción de habilitar o deshabilitar la aceleración de hardware en los siguientes niveles: Solicitud, Actividad, Ventana, Ver

De esta manera también puede limitar la aceleración de hardware en su aplicación, pero por el sonido de la misma lo necesitará para la mayoría de las funciones de sus aplicaciones.

Espero que esto ayude

 12
Author: Neil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-18 14:26:41