2010-05-04 20 views
5

Gasté cientos de nosotros desarrollando una aplicación Adobe AIR con Flex 4.0 y ahora pensé que debería haber terminado, pero después de dejar que la aplicación funcione durante más de unas horas comienza la respuesta de la interfaz de usuario falta ...Adobe AIR aplicaciones de respuesta lenta después del tiempo de inactividad

Lo que hago: Mi aplicación utiliza cromos personalizados mediante el establecimiento de imágenes de fondo con transparencia en BorderContainers dentro de módulos de ventana. Abrí muchas ventanas emergentes diferentes, todas basadas en Window-Class (¡no en TitleWindow!) Y creadas y cerradas dinámicamente en ActionScript. Al utilizar Flex Profiler, sé que el recolector de basura destruye correctamente todos los recursos asignados y el consumo de memoria no aumenta con el tiempo de actividad de la aplicación. Además, el generador de perfiles me muestra que ninguno de mis métodos ocupa mucho tiempo de CPU, por lo que también debería estar bien.

Lo que es realmente interesante: Si interactúo continuamente con la aplicación (haga clic en botones, escriba texto, ...) no pasa nada y todo está bien, PERO si no interactúo con la aplicación durante varios minutos y luego volver - ¡la respuesta de UI es realmente pobre!

Realmente pobre significa que, si escribo texto en un control de entrada de texto, ¡puedo ver cada letra escrita con un retraso de al menos 1 segundo!

¿Alguien ha experimentado una situación similar o alguien que sabe cuál podría ser el problema? Mi sugerencia es que, después de alguna actividad, el flash-player-runtime limite el uso de la CPU de la aplicación AIR y no devuelva la potencia total cuando el usuario regrese.

He probado la aplicación con Flex 4.0, 4.1 Flex, AIR 1.5, AIR 2.0 con Flash Player 9 y también Flash Player 10 en Windows XP y Windows 7 ...

Respuesta

5

fin he encontrado la solución!

Los nuevos componentes de chispa introducidos con Flex 4 agregaron una propiedad llamada "backgroundFramerate" a la clase WindowedApplication. De forma predeterminada, esta propiedad se establece en 1, lo que significa que AIR acelera automáticamente la velocidad de fotogramas cuando la ventana de la aplicación principal (!) Queda inactiva. Lamentablemente, este framerate se utiliza para toda la aplicación, incluidas todas las demás instancias de ventana que pueden estar en primer plano y activas.

Después de deshabilitar la regulación automática de velocidad de fotogramas configurando backgroundFramerate-property en -1, ¡todos los problemas desaparecieron!

Aunque sé que al activar nuevos objetos derivados de ventanas para mostrar ventanas emergentes, creo que esto es un error en el Flex 4 que aún no está solucionado.

Cuestiones relacionadas