挖掘256MB內(nèi)存的余地:開發(fā)者急需鉆研應(yīng)用優(yōu)化
針對該問題Windows Phone團隊詳細(xì)列出了應(yīng)用優(yōu)化指南,幫助開發(fā)者高效的實現(xiàn)針對不同版本W(wǎng)indows Phone的應(yīng)用優(yōu)化,具體應(yīng)用優(yōu)化方案包括以下幾個方面:
優(yōu)化啟動時間
確保應(yīng)用的啟動時間能夠大幅度縮減,開發(fā)者在應(yīng)用渲染完成之前盡可能的延緩其他用戶動作發(fā)生的可能性。這就意味著開發(fā)者需要最小化App/Page框架下的代碼并且保持Launching/OnNavigatedTo 用戶動作最小化。
例如應(yīng)用初始化將會花費一定的時間或者依賴網(wǎng)絡(luò)相應(yīng)以及文件的輸入或輸出,那么開發(fā)者可以利用進度條的形式來傳達(dá)動作信息,同時在不影響頁面布局的情況下調(diào)整系統(tǒng)托盤不透明度為0以利用系統(tǒng)托盤ProgressIndicator 來保證最佳性能。
當(dāng)原始框架渲染完成,在異步操作未完成的情況下開發(fā)者可以利用獨立的存儲操作來阻塞UI線程的調(diào)用,確保調(diào)用異步來保證啟動時用戶界面的快速響應(yīng)。
由于Frame是由操作系統(tǒng)本身繪制并作為啟動序列的一部分,因而可以適度增加閃屏來延長啟動時間。此外還可以通過從頁面中簡化和去除不必要的XAML以減少受XAML分析的影響,也可以顯著延長啟動。
減少內(nèi)存使用
在資質(zhì)認(rèn)證頁面5.2.5中明確提到在低端設(shè)備中應(yīng)用的內(nèi)存使用量不得超過90MB,隨著像Lumia 610這樣的設(shè)備上市,這些優(yōu)化工作將會顯得至關(guān)重要。
開發(fā)者可以利用內(nèi)存分析器和相關(guān)API來分析應(yīng)用程序的內(nèi)存使用情況。其首要基本原則為保證在用戶需要的時候進行內(nèi)存處理,以替代在啟動界面預(yù)先加載應(yīng)用數(shù)據(jù)。例如,根據(jù)需求加載頁面的數(shù)據(jù),在內(nèi)容改變時再進行刷新數(shù)據(jù)而不是一味的進行全局?jǐn)?shù)據(jù)的加載。
注意內(nèi)存泄漏,例如用戶在使用Win鍵切換至主屏幕時應(yīng)用并未瑞出,這樣就會出現(xiàn)一個循環(huán)的導(dǎo)航切換功能,駐留在內(nèi)存當(dāng)中,當(dāng)用戶利用多任務(wù)進行切換時很可能會導(dǎo)致應(yīng)用由于內(nèi)存不足而崩潰的現(xiàn)象。為了避免這種循環(huán)導(dǎo)航的出現(xiàn),開發(fā)者可以替換掉Win鍵的功能或者利用Windows Phone 7.5提供的會展操作API來解決該問題。
此外,還要確保圖像使用效率,因為當(dāng)應(yīng)用程序加載高分辨率圖像到UI界面然后通過縮放來適應(yīng)較小的Container容器,也將會消耗更多的內(nèi)存。
處理性能下調(diào)
為了保證前臺256MB內(nèi)存的釋放,通用的后臺代理(PeriodicTasks/ResourceIntensiveTasks)將不可用。
當(dāng)前Windows Phone終端用戶可以再設(shè)置選項里面手動關(guān)閉后臺功能,當(dāng)后臺代理超過限額時,操縱系統(tǒng)將自動終結(jié)后臺應(yīng)用,這些功能都是通過InvalidOperationException來實現(xiàn)的,因而開發(fā)者有必要針對Tango設(shè)備對該功能進行調(diào)整。
按照上面給出的思路來禁用掉上述功能以確保應(yīng)用的用戶體驗最大限度的不受影響,從而在低端設(shè)備正常發(fā)揮其性能和特征,開發(fā)者可以給予最新版的SDK7.1.1進行debug。
此外,開發(fā)者如果希望通過減少/修改功能,以便于在低端設(shè)備上的內(nèi)存需求,可以使用WebBrowserTask和BingMapsTask來替代內(nèi)存密集型的WebBrowser和Map控件。例如,可以卸載應(yīng)用程序中占用本地內(nèi)存的進程,避免在人機交互過程中內(nèi)存不足而導(dǎo)致應(yīng)用崩潰的現(xiàn)象。的
用戶輸入響應(yīng)
用戶總是希望應(yīng)用程序界面能夠反應(yīng)靈敏,因而保持UI線程的的動作在不需要的情況下盡可能的處于凍結(jié)狀態(tài)則顯得非常必要。
為了保證頁面加載時間,在應(yīng)用被完全渲染之前延緩加載時間同樣至關(guān)重要,此外,利用TiltEffect的確認(rèn)用戶輸入也將使應(yīng)用程序的外觀和感覺具備原生應(yīng)用程序的用戶體驗。
許多開發(fā)者在應(yīng)用程序通過添加頁面過渡動畫,來延緩加載時間,這是一個非常值得推薦的做法,但是如果過度畫面會影響到應(yīng)用程序的穩(wěn)定性時,開發(fā)者則需要將其禁用,尤其是針對低端設(shè)備,這樣可以顯著的提高應(yīng)用程序的性能。
總結(jié)
通過上述優(yōu)化指南,開發(fā)者可以輕易地保證用戶能夠獲得良好的用戶體驗,而這些簡單的優(yōu)化并不僅僅針對低端設(shè)備,同樣對于當(dāng)前的Windows Phone設(shè)備一樣可以獲得良好的用戶體驗。同時,合理的利用256MB的SDK工具也將會使得開發(fā)者的優(yōu)化工作更為高效。
【編輯推薦】