Windows Phone開發人員七宗罪之暴食
譯文暴食是什么?
所謂暴食,是指人類表現出的超出自身所需的強烈欲望。
產生原因:據說襁褓中的嬰兒如果斷奶不當,就會產生對食物的極端依賴。
暴食如何影響Windows Phone的開發工作?
——縱容無度、虛耗資源
這個世界永遠不缺乏技術類產品,它們隨著時間的推移不斷涌現,并變得更新、更快且功能更強,越來越聰明的同時也越來越吻合個人需求。如今的平板設備及臺式機在計算性能與存儲能力方面,已經不輸于幾年之前的超級計算機。而在我看來,這一切利好因素非但沒有令整個IT行業有所提升,反而導致軟件開發商愈發好逸惡勞。時至今日,我們不必再為性能表現擔憂,反正硬件已經足夠強大,再繁重的任務也帶得起來。
移動開發工作在這方面則堪稱軟件行業的表率。由于智能手機的尺寸規格受限,它們在性能上不可能做到游刃有余,因此在編寫代碼時就要充分考慮到這些局限以保障成品的運行效率。我們需要在性能優化工作上多花心思,因為一旦卡頓或拖慢情況出現,糟糕的使用體驗會令我們很快失去用戶。在本文中,我將跟大家一起聊聊Windows Phone開發人員應該如何在生態系統的開發工作中避免暴食帶來的不利影響。
資源:毫無節制地占有手機資源是應用程序開發的大忌。Windows Phone系統團隊的工作者們在如何令核心操作系統更加精簡高效方面投入了大量時間和精力,但一切努力在對資源索求無度的應用程序面前都顯得軟弱無力。首先,請大家務必確保自己的產品在運行過程中不會占用太多內存,只有這樣“芒果”系統才會在進行多任務/快速應用切換操作時始終讓我們的程序駐留在設備內存當中。托管代碼是解決問題的好辦法,但注意避免任何不必要的占用狀態或者庫引用。最好別使用太多第三方工具包,尤其是杜絕類似功能重復載入的弊病。除此之外,雖然動畫能提升使用體驗并充分發揮Metro的固有優勢,但使用過多引發的資源占用也會令用戶反感。我就遇上過由于個性化動畫太多,相關第三方工具令默認手機應用框架(用于處理XAML頁面)在切換時對資源需求過高,最終引發嚴重的系統拖慢現象——當然,這可能是個別情況,但重點在于大家需要清楚了解哪些元素值得保留、而哪些應該放棄。根據優先級別列出一張清單,能夠有效幫助我們調整設備的性能表現。
線程:作為開發人員,相信我不必再提醒大家為自己的平板/智能手機應用程序鎖定用戶界面(UI)線程了。雖然有時候我們只是在用手機計算人數或者清點賬目,但應用程序UI需要始終處于響應狀態。為了實現這一點,大多數Silverlight類編程建議我們以異步方式應對這類繁重的處理任務。也就是說在實際處理、動畫及UI線程自動合并等工作中,合理使用后臺線程配置功能。在必要的時候,我們完全可以建立一項單獨的后臺任務作為輔助?,F實是殘酷的,但大家不要灰心,畢竟Async CTP已經能夠起到作用。等到將來它完全就緒后,我們將可以徹底告別煩人的Dispatcher,BeginInvoke()或者DownloadCompleted()APM/EAP模塊。到那個時候,只需啟用async-await(異步喚醒)功能,即可輕松幫助設備避免同時執行多個任務的窘境。
緩存:只要有可能,把一切東西都塞進緩存就對了,這能有效防止相同的網絡HTTP被調用兩次。這一點對于圖像/平面類數據尤其適用。目前已經有許多產品,能夠以隔離存儲的形式為手機節省資源,大家感興趣的話可以多加關注。
運行模型:現在大家已經知道Windows Phone “芒果”支持通過內存中的應用程序后臺堆棧實現快速切換功能,但這并不代表微軟原先采用的這套墓碑機制就完全不用擔心了。顯然,我們不能隨便寫出一款資源需求量巨大的應用程序,然后指望著它能夠長期駐留在內存當中。要完全從墓碑機制的“偽多任務”陰影中走出來,我們還需要下一番苦功。在這里向大家推薦另一篇文章,希望能給各位帶來些啟示。
警告/提示:現在我們可以利用新的API創建警告/提示信息,這當然不錯;不過也別過分依賴這套新機制。要知道提示信息的上限為50條,如果用戶未能及時清理或查看這些消息,接近容量上限的情況很可能引發大麻煩。
使用API:新的日程表及聯系人API非常貼心,對吧?不過再次提醒大家,擁有權利同時意味著承擔責任。最好不要在用戶無法選擇的情況下濫用這些機制,這種忽略使用者感受的做法很可能讓我們的應用程序面臨卸載或者口碑極差的危機。
好了,這就是本文要談的內容??偨Y起來就是一句話:不要因為我們能這么做,就不假思索地選擇這么做。請大家隨時關注《Windows Phone開發人員七宗罪》系列文章的第七篇。
原文標題:7 Deadly Sins for Windows Phone Developers: Gluttony 核子可樂譯
原文鏈接:http://mobile.dzone.com/articles/7-deadly-sins-windows-phone-4
【編輯推薦】