2012-03-19 20 views
1

我們有一箇中等大小的Flex 3.6應用程序,其中包含大約20個不同的頁面視圖(通過單個惰性ViewStack進行管理),每個視圖都有多個組件。大多數使用自定義渲染器。如何提高不可見視圖的Flex性能

所有模型數據在啓動時加載,並且模型實例的更改通過綁定和/或集合更改事件進行通信。

一旦用戶查看了每個頁面至少一次,所有頁面視圖都被實例化並愉快地收聽更新事件。

這實際上意味着每當模型實例發生變化時,所有感興趣的視圖都會接收該事件並計算派生數據或觸發項呈示器。

我已經在概念證明應用程序中測試並確認了這種行爲。即使將列表設置爲不可見,它仍會偵聽收集更改事件並使所有受影響的渲染器無效。

你會怎麼做?

+0

就我所知,Flex 3.6並不存在,3.5或4.6也是如此? – RIAstar 2012-03-19 16:50:38

+0

關於Flex移動開發的優化有很多資源,但我在這裏看到/想到的主要內容是您應該使用ViewNavigator而不是ViewStack http://opensource.adobe.com/wiki/display/flexsdk/View +和+ ViewNavigator – shaunhusain 2012-03-19 17:32:59

+0

@RIAstar [Flex 3.6 SDK](http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk)確實存在...我有我的項目之一編譯它! – 2012-03-19 21:40:33

回答

1

爲您的視圖提供單例並不是推薦的做事方式,因爲它將所有內容都保存在內存中,這可能很大。使用後應妥善銷燬所有視圖。您應該對系統的整體內存管理更加警惕。此外,您應該「停用」當前未使用的系統部件。

我建議您從視圖中除去當前不需要的任何東西,除非它適合「預加載」它們以用於某些用途。你還應該看看profiler(如果有的話),看看使用最多內存的是什麼,並嘗試修復那些使用了太多內存的代碼。