• 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用户的市场里就看不到你的应用了。

  • 相关阅读:
    (转)Delphi写COM+的心得体会
    delphi透明组件(控件)开发
    Delphi 常用组件常见属性说明
    DELPHI方面输入EDIT
    BYTE 转字符串
    椭圆按纽制作
    数据库实例学生名册管理系统(DAO的使用实验)
    数据库如何快速创建连接字符串
    数据库使用DataReader的简单实例(两种办法)
    数据库ADO.NET的结构
  • 原文地址:https://www.cnblogs.com/allanxyq/p/2445686.html
Copyright © 2020-2023  润新知