7.1.1推出以后我們該對自己的程序做下小升級以應對低端手機,
對有可能報錯的地方做下處理,
對可以節省內存的地方盡量采用一些可以節省內存的方法替換原來的方法。
下面列出一些小技巧僅供參考。
1.下面是判斷機器內存的helper用來區分256的機型
public static class LowMemoryHelper { public static bool IsLowMemoryDevice { get; set; } static LowMemoryHelper() { try { // Int64 result = DeviceStatus.ApplicationMemoryUsageLimit; Int64 result = (Int64)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit"); IsLowMemoryDevice = result < 94371840L; } catch (ArgumentOutOfRangeException) { IsLowMemoryDevice = false; } } }
上面注釋的部分和下一行的意思是一樣的,按照微軟msdn所說是推薦使用注釋掉的那行,
但是它取值比GetValue的值要大,原因不清楚,
用getvalue的方式判斷最大程序可用內存小於90M是256的機型(更確切的說是94371840 bytes)。
2.不支持PeriodicTask and ResourceIntensiveTask
用到這兩個類的地方應該加入判斷避免出現異常影響用戶體驗。
為什么不支持呢,看一下如果執行后台線程內存的分布情況就知道了,很接近crash!:
100MB | + | 60MB | + | 60MB | + | 15MB | ≈ | 256MB |
(Operating system) | (Foreground app) | (ResourceIntensiveTask) | (AudioStreamingAgent) |
這里可以參考 Background Agents Overview for Windows Phone;
3.使用WebBrowserTask替代<WebBrowser />控件
4.用 BingMapsTask替代 <Map />控件
5.降低圖像質量
6.長列表使用數據虛擬化
7.禁用跳轉頁面動畫
8.減少使用SoundEffect的次數
9.壓縮XNA資源
10.仔細排查內存泄露
11.另外如果不想針對7.1.1進行優化又擔心256的用戶下載后使用出現什么問題,然后給了差評,或者直接放棄這部分用戶,還有個辦法,O(∩_∩)O哈哈~
在WMAppManifest.xml文件的Capabilities標記下加入Requirements標記,方法如下:
</Capabilities> <Requirements> <Requirement Name="ID_REQ_MEMORY_90" /> </Requirements>
這樣在256用戶的市場里就看不到你的應用了。