我花了数百美元使用 Flex 4.0 开发 Adobe AIR 应用程序,现在我想我应该已经完成了,但在让应用程序运行几个小时以上后,UI 响应能力开始缺乏......
我做什么:
我的应用程序通过将具有透明度的背景图像设置为窗口模块中的 BorderContainers 来使用自定义镶边。我打开了许多不同的弹出窗口,它们都基于窗口类(不是 TitleWindow!),并在 ActionScript 中动态创建和关闭。通过使用 Flex Profiler,我当然知道垃圾收集器会正确销毁所有分配的资源,并且内存消耗不会随着应用程序的正常运行时间而增加。此外,分析器向我显示,我的方法都没有占用大量的 CPU 时间,所以这也应该没问题。
真正有趣的是:
如果我持续与应用程序交互(单击按钮、写入文本……),则什么也不会发生,一切都很好,但是如果我几分钟不与应用程序交互然后回来 - UI 响应能力真的很差!
非常糟糕的意思是,如果我在 TextInput-Control 中输入一些文本,我可以看到每个字母的写入过程至少有 1 秒的延迟!
有没有人遇到过类似的情况,或者知道的人,可能是什么问题?
我的建议是,在进行某些活动后,flash-player-runtime 会限制 AIR 应用程序的 cpu 使用率,并且在用户返回时不会恢复全部功能。
我使用 Flex 4.0、Flex 4.1、AIR 1.5、AIR 2.0 和 Flash Player 9 以及在 Windows XP 和 Windows 7 上运行的 Flash Player 10 测试了该应用程序...
我终于找到了解决方案!
Flex 4 中引入的新 Spark 组件向 WindowedApplication 类添加了一个名为“backgroundFramerate”的属性。默认情况下,此属性设置为 1,这意味着当主 (!) 应用程序窗口处于非活动状态时,AIR 会自动限制帧速率。不幸的是,这个帧速率用于整个应用程序,包括所有其他可能位于前台且处于活动状态的窗口实例!
通过将后台 Framerate-property 设置为 -1 禁用自动帧速率限制后,所有问题都消失了!
尽管我知道启动新的窗口派生对象来显示弹出窗口,但我相信这是 Flex 4 中的一个错误,该错误仍未修复。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)