Я потратил сотни нашей разработки Adobe AIR Application с Flex 4.0, и теперь я думал, что должен был закончить, но после разрешения выполнению приложения в течение больше, чем нескольких часов скорость отклика UI начинает недоставать...
Что я делаю: Мое приложение использует пользовательского хромиса путем установки backgroundImages с прозрачностью к BorderContainers в модулях Окна. Я открываю много различных всплывающих окон, которые все основаны на Классе Окна (не TitleWindow!) и созданный и закрытый динамично в ActionScript. При помощи Профилировщика Flex я, конечно, знаю, что сборщик "мусора" уничтожает все выделенные ресурсы правильно, и потребление памяти не повышается со временем работы приложения. Далее профилировщик показывает мне, что ни один из моих методов occupate обширное процессорное время, таким образом, это также должно быть в порядке.
Что действительно интересно: Если я непрерывно взаимодействую с приложением (нажмите кнопки, запишите текст...), ничего не происходит, и все прекрасно, НО если я не взаимодействую с приложением в течение нескольких минут и затем возвращаюсь - скорость отклика UI действительно плоха!
Действительно плохие средства, что, если я ввожу некоторый текст в TextInput-управление, я могу наблюдать каждую букву, записанную с задержкой по крайней мере 1 секунды!
Кто-либо испытал аналогичную ситуацию или кого-то, кто знает, какова проблема могла быть? Мое предложение, что после некоторого действия время выполнения Flash player ограничивает использование CPU приложения AIR и не отдает полную мощность, когда пользователь возвращается.
Я протестировал приложение с Flex 4.0, Flex 4.1, AIR 1.5, AIR 2.0 с Flash Player 9 и также Flash Player 10, работающим на Windows XP и Windows 7...
Я наконец-то нашел решение!
Новые spark-компоненты, представленные во Flex 4, добавили свойство под названием "backgroundFramerate" к классу WindowedApplication. По умолчанию это свойство установлено в 1, что означает, что AIR автоматически снижает частоту кадров, когда основное (!) окно приложения становится неактивным. К сожалению, эта частота кадров используется для всего приложения, включая все другие окна-экземпляры, которые могут быть на переднем плане и активны!
После отключения автоматического замедления частоты кадров путем установки свойства backgroundFramerate в -1 все проблемы исчезли!
Хотя я знаю, что установка новых объектов, производных от окон, для отображения всплывающих окон, я считаю, что это ошибка во Flex 4, которая до сих пор не исправлена.