2010-05-04 74 views
5

我花了数百我们的开发Adobe AIR应用程序使用Flex 4.0,现在我想我应该已经完成​​了,但是让应用程序运行时间超过数小时的UI响应性开始后后反应慢缺少...Adob​​e AIR应用程序的空闲时间

我该怎么做: 我的应用程序使用自定义色彩,通过在Background-modules中将透明BackgroundImages设置为BorderContainers。我打开了许多不同的弹出窗口,它们都基于Window-Class(不是TitleWindow!),并且在ActionScript中动态创建和关闭。通过使用Flex Profiler我当然知道,垃圾收集器会正确销毁所有分配的资源,并且内存消耗不随应用程序正常运行时间而增加。此外,剖析器告诉我,我的方法都没有占用大量的CPU时间,所以这也应该是可以的。

什么是真正有趣的: 如果我持续地与应用程序进行交互(点击按钮,写文本......),什么也没有发生,一切都很好,但如果我不与应用程序交互几分钟,然后再来返回 - UI响应非常差!

真可怜手段,如果我键入一些文本到TextInput控,我可以看每一个字母被写入至少有1秒的延迟!

任何人都经历过类似的情况,或某人谁知道,这个问题可能是什么? 我的建议是,在一些活动之后,flash-player-runtime会限制AIR应用程序的CPU使用率,并且在用户返回时不会恢复全部功率。

我从Flex 4.0时,Flex 4.1,AIR 1.5,AIR 2.0在Flash Player 9测试的应用程序,并且还的Flash Player 10在Windows XP和Windows 7上运行...

回答

5

我终于找到了解决办法!

使用Flex 4引入的新火花组件增加了一个名为“backgroundFramerate”到在WindowedApplication类属性。默认情况下,此属性设置为1,这意味着当main(!)应用程序窗口处于非活动状态时,AIR将自动调节帧速率。不幸的是,这个帧速率被用于整个应用程序,包括所有其他窗口实例,它们可能处于前台并处于活动状态!

由backgroundFramerate属性设置为-1的所有问题都消失了禁用自动帧率节流后!

Altough,我知道,那instiating新窗口派生的对象,以显示弹出式窗口,我认为,这是在这仍然是不固定的Flex 4中的错误。