windows phone 7.1.1SDK技巧
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用户的市场里就看不到你的应用了。
分类:
wp7
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!