android - cordova jquery
PhoneGap-Rendimiento bajo en comparaciĆ³n con el navegador en Android (5)
Desarrollé una aplicación para Android usando jquery mobile y phonegap. Implementé la aplicación en mi dispositivo a través de usb. El rendimiento de la aplicación es realmente malo, especialmente mientras se desplaza por una lista más larga.
Lo extraño es que toda la aplicación funciona sin problemas si acabo de abrir el navegador en mi teléfono y acceder al index.html directamente. La misma tecnología, el mismo contenido. No uso la API nativa de phonegap ni nada similar.
Probado con phonegap 1.5.0 y 1.7.0rc1, jquery mobile 1.1.0 en android 4.0.2.
¿Algunas ideas?
Encontré una respuesta aquí: http://groups.google.com/group/phonegap/browse_thread/thread/94da1cf881abe995/6d4f7aea7aeba523?lnk=gst&q=performance
Probablemente haya una diferencia entre el navegador nativo y la vista web en términos de rendimiento de JavaScript.
Si puede confirmar que el navegador tiene un mejor rendimiento (que no es algo subóptimo en su código que frustra uno pero no el otro), podría considerar implementarlo como una aplicación html5 fuera de línea para que realmente se ejecute en el navegador.
Nos topamos con problemas de rendimiento mientras desplazamos la misma cantidad de elementos de la lista con jquery mobile. El rendimiento fue tan pobre (ni siquiera lo intentamos en el entorno PhoneGap) que volvimos a escribir la aplicación mediante la biblioteca iScroll ... ahora la aplicación se desplaza muy suavemente.
Si está al principio del desarrollo, puede intentar cambiar la biblioteca de UI.
Después de esta situación, implementamos nuestras aplicaciones para probar los dispositivos con bastante frecuencia para administrar los problemas de rendimiento a tiempo ... esto se convirtió en una "política" :)
En Honeycomb (3.0), Ice Cream (4.0) y dispositivos posteriores, puede aumentar el rendimiento agregando lo siguiente en la etiqueta <Application ...>:
android:hardwareAccelerated="true"
Podría establecer minSdk en 8 (Android 2.2) para compatibilidad y targetSdk en 15 (Android 4.0) y eso haría que la aceleración de hardware funcione cuando solo esté disponible en el dispositivo.
Creo que con esta bandera el rendimiento de mis aplicaciones es igual a ejecutarlas en el navegador, así que supongo que es porque el navegador fue codificado con aceleración de hardware :)
Tuve un problema similar: una página con una lista más larga de divs temáticos de "medio complejo". El navegador del teléfono HTC no tuvo problemas para mostrar. Pero dentro de la aplicación de la aplicación de teléfono fallado por completo. Vi una especie de WSOD, que desapareció solo después de tocar la pantalla. Después de tocar, la página se mostró correcta.
El problema no estaba en su lugar, cuando acorté la div-list a uno o dos div-elements o cuando reduje los sub elementos dentro de los divs y reduje el esfuerzo de renderizado causado por la complejidad de css.
La pantalla blanca parecía, si todo el cuerpo fuera invisible, ya que solo se mostraba el color de fondo de los documentos (agregué un color rosa claro para esto). Así que supongo que el renderizado fue el problema después de leer este hilo
Probé las diversas propuestas que encontré en este hilo para hacer que la aplicación funcione sin el "WSOD". Pero nada funcionó. Algunos de ellos hicieron que la aplicación se mostrara realmente peor.
Finalmente, después de un día entero de búsqueda, lo hice. Configuré dentro de la etiqueta (no la etiqueta) de mi AndroidManifest
<application android:hardwareAccelerated="false" ...
Ahora la aplicación se comporta de la misma manera rápida que mi navegador web. Parece que, si la aceleración de hardware no siempre es la mejor característica ...
Mis versiones: phonegap 3.5.0, Android 4.0.3, jQuery v2.1.0, HTC Sense 3.6