天天看點

Metro風格XAML應用程式性能技巧

微軟釋出了一篇名為《Metro風格XAML應用程式性能技巧》的白皮書,其中包含一些關于保持響應、確定流暢動畫、改善啟動時間、消耗較少資源等方面的建議。我們在這裡進行了一些總結。

UI 相關:

使用背景線程并保持UI線程可響應 —— 使用async與await程式設計;

避免在布局處理過程中讓布局失效;

使用Windows.Storage.BulkAccess與Windows.Storage.StorageFolder.GetFilesAsync API處理多檔案;

考慮互操作時調用WinRT API帶來的額外開銷,尤其是在代碼熱路徑(code hotpath)上。

動畫:

盡可能讓動畫獨立(于UI線程);

最小化覆寫——例如,完全折疊遮蓋的元素;使用組合元素取代分層對象;

若畫布中的元素不發生改變或沒有動畫效果,可以使用CacheMode将畫布進行緩存;

避免為Web視圖添加動畫。

啟動時間:

借助閃屏、啟動頁面、背景加載資料來提高感覺;

啟動階段盡可能地最小化待解析的XAML;

優化元素數量;

如果沒有太大差别,可以合并程式集——加載一個大的程式集通常要比加載兩個小的程式集所花時間要少。

應用程式處理生命期:

在終結前進入暫停狀态——一個應用程式在終結前的暫停狀态最多可以有5秒的時間用于存儲它的資料;

隻序列化和反序列化改動的資料;

盡可能在暫停狀态釋放盡可能多的記憶體;釋放檔案和裝置句柄。與此同時,設計時要考慮應用程式可以快速地恢複狀态;

将畫刷建立為ResourceDictionary元素以在頁面間進行重用,該做法可以提高緩存效果。

呈現資料:

使用UI虛拟化,即隻建立那些靠近檢視端口的對象;使用資料虛拟化,即采用小步增量的方式按需讀取大資料;

使用Item模闆選擇器。

媒體:

盡可能使用全屏回放;

不要覆寫内嵌的視訊;

延遲設定MediaElement的媒體源;

盡可能比對視訊/圖像與裝置之間的分辨率;

對于Windows 8,微軟推薦H.264為視訊主要格式,AAC與MP3為音頻推薦格式。而當需要包含短音效時(例如,在遊戲中),請使用WAV。

微軟的這篇白皮書包含了詳細的解釋與代碼示例。不過,書中并沒有提及DirectX與XML互操作方面的内容,你可以閱讀這篇文章加以了解。

chaunceyhao

繼續閱讀