2010-05-04 45 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中的錯誤。