Aplicaciones JavaScript / HTML / CSS en dispositivos Android – extremadamente lento

Estamos haciendo algunos juegos de JavaScript. Funcionan perfectamente en el iPhone y el iPad y el escritorio también. El mayor problema son los dispositivos Android. Todas las tabletas que tenemos con Honeycomb OS 3.x (Samsung Tab 10.1, Motorola Xoom, Acer Iconia, etc.) son extremadamente lentas cuando se ejecuta JavaScript y se procesa el contenido. Es mejor en los teléfonos 2.x, pero sigue muy lejos de los dispositivos de Apple …

Intentamos utilizar el enfoque tradicional con el elemento div , así como el lienzo HTML5 , pero incluso el simple ejemplo de bola rebotante es extremadamente lento (si quieres probarlo, accede a http://sie.mautilus.com/canvas ).

Si inhabilitamos en el menú de depuración en Android, la opción Habilitar presentación de OpenGL es ligeramente mejor, pero aún no es utilizable para un público amplio, sin hablar del hecho de que el usuario normal no lo hará …

Esto hace que la interfaz de usuario basada en JavaScript, que es poco complicada de eventos totalmente inutilizable en Android …

¿Cómo es que la bola de rebote simple, que estaba funcionando en MS-DOS en mi máquina de Intel 386 es inutilizable en las tabletas de gama alta con las CPU Cortex-A9 del dual-corazón 1 GHz?

Véase también allí:
Http://code.google.com/p/android/issues/detail?id=17353
Http://groups.google.com/group/phonegap/browse_thread/thread/fc13b40165db8a00?pli=1a

Saludos, STeN

Tienes razón de que es muy lento en dispositivos Android, me encontré con el mismo problema y buscar en Internet sólo encuentro personas que están de acuerdo con nosotros.

Hice algunas cosas para acelerar las cosas (aunque viene con una calidad inferior). También sólo he comprobado en HTC Sensation y Samsung galaxia ficha 10.1. Creo que necesitará usar diferentes configuraciones para diferentes teléfonos.

  1. Establecer el tamaño de la pantalla para que mi teléfono no crea un lienzo más grande y luego escalarlo de nuevo.
  2. Escala hasta la escena por el factor 2. Esto cortará los píxeles utilizados en la mitad, por lo que en realidad tiene un lienzo más pequeño estirado en la pantalla completa
  3. Dont use clearRect para borrar todo el lienzo y luego volver a dibujar todo. En realidad la eliminación de la clearRect en su ejemplo bola rebote mostrará una gran cantidad de mejora. Limpiar las áreas que realmente cambian (murciélagos y pelota) y luego redibujarlo será suficiente.

En un lado no me di cuenta de que android 2 y 4 realizar más rápido que 3, pero que se basa en las pruebas con sólo 3 dispositivos, por lo que no es difícil estadísticas.

También leí que el uso de translate3d en un lienzo activará la renderización de hardware si está disponible, pero no he comprobado / confirmado esto.

Algunos códigos que pueden ayudarle:

<meta name="viewport" content="width=device-width, initial-scale=0.5, user-scalable=no"/> $(gameEl).css('-webkit-transform', 'scale3d(2, 2, 0) translate3d(0, 0, 0)'); $(gameEl).css('-webkit-transform-origin', '0 0'); 
  • Cómo poblar webview en android con texto sin formato de base de datos y ser capaz de manejar caracteres de nueva línea
  • ¿Cómo puedo pasar un valor de una página HTML a otra usando JavaScript?
  • Android WebView: bloqueo tras la carga de url
  • Android Phonegap - Cómo abrir una aplicación nativa de Google Maps
  • Marcador de Smartphone
  • Evento deviceready no disparando en Cordova 3.2.0
  • Evite Android de cerrar la pantalla mientras la aplicación (con Phonegap) está activada
  • JavascriptInterface en el WebView de Android: múltiples llamadas a JS causan interbloqueo
  • ¿Cómo se puede mover este cuadro de cultivo nativo buggy en una aplicación híbrida?
  • JavaScript createObjectURL no funciona en el navegador de Android
  • Android - JavaScript: el evento touchstart no se activa hasta que se amplía o se desplaza por la página
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.