为内存为256MB的Windows Phone设备开发应用

简介:
全球最大移动通信展Mobile World Congress 2012上,微软和OEM合作伙伴宣布支持更多的硬件配置。手机内存在主流512MB的基础上,拓展到256MB,从而使更广泛的用户群体验Windows Phone。
开发者要想更广泛的分发自己的应用程序,首先需要确定应用程序占用内存大小,并进而优化应用程序以便在256MB或更小内存的设备中正常运行。要为小内存设备开发应用程序,需要安装Windows Phone SDK 7.1.1 Update,该SDK版本包含针对256MB手机开发的一些特性。使用Windows Phone SDK 7.1.1 Update,开发者可以在代码层面检测你的应用程序是否能运行在256MB设备上,如果必要的话会禁用应用程序中的部分功能,以便应用程序能供所有手机使用。另外,使用这个版本的SDK提供了256MB版本的Windows Phone模拟器测试应用程序。最后,如果你的应用程序在256MB设备上无法正常运行,可以修改应用程序清单文件在Marketplace中声明不支持这类小内存设备本文描述Windows Phone SDK 7.1.1Update中的新特性,以及Windows Phone OS 7.1在256MB真机上不支持或有限支持的功能。
  本文包含以下部分。
安装Windows Phone SDK 7.1.1 Update
检查特定设备的应用程序内存限制
256MB设备的专有特性注意事项
支持多种设备类型的应用程序和游戏的测试和调试
使用应用程序配置清单选择不支持256MB设备类型
 
u 安装 Windows Phone SDK 7.1.1 Update
为了调试在256MB设备上运行的应用程序和游戏,开发者应该安装Windows Phone SDK 7.1.1 Update。安装Windows Phone SDK 7.1.1 Update的必要条件是必须先安装Windows Phone SDK 7.1。如果你需要安装Windows Phone SDK 7.1,请参阅 安装Windows Phone SDK。然后从下载中心安装 Windows Phone SDK 7.1.1 Update
 
u 检查设备的应用程序内存限制
使用Windows Phone SDK 7.1.1 Update,开发者可以在运行你的应用程序的设备中实时检测内存工作集限制。如果你知道你的应用程序的某些功能不支持或者内存消耗较大,,就可以禁用应用程序的这部分功能。你可以调用 GetValue(String)方法,传递 ApplicationWorkingSetLimitpropertyName参数。以下代码演示了如何完成该操作。
 
// Place call in a try block in case the user is not running the most recent version of the Windows Phone OS and this method call is not supported.
try
{
    long result =
    (long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
}
catch (ArgumentOutOfRangeException) {// The device has not received the OS update, which means the device is a 512-MB device.}
 
如果是一个256MB内存的设备, GetValue(String)方法返回一个小于90MB(94371840 Byte)的 long型的值。如果设备的内存是256MB,那么你的应用程序使用的内存不能超过90MB。为了适应这个内存的限制,开发者需要在应用程序中避免使用某些功能,例如页面跳转的动画。如果你使用这些特定的功能,请确保在提交到Marketplace之前测试你的应用程序的内存使用情况,尤其是那些使用大量多媒体资源的应用程序和游戏。
注意:
某些对GetValue()的调用需要设备身份能力:ID_CAP_IDENTITY_DEVICE。如果你在应用程序中使用C:Microsoft.Phone.Info.DeviceExtendedProperties类,该能力会默认被添加到程序中。然而如果你使用 ApplicationWorkingSetLimit参数调用GetValue()方法,你可以在应用程序整合从应用程序配置清单中删除设备身份能力,这样它就不会在后台整合到应用程序中了。更多信息,请参见 如何检测应用程序的能力
u 256MB 设备的专有特性注意事项
你可以在256MB设备上使用Windows Phone OS 7.1提供的大多数功能而不必担心性能问题。然而,256MB的设备不支持通用后台代理,还有一些附加的功能也需要谨慎使用,以免超过应用程序的内存限制。
 
避免通用后台代理
256MB的设备上唯一不支持的功能就是通用后台代理。下列代理是不支持的:
资源密集型任务
周期性任务
当你在应用程序中使用 Add(ScheduledAction)方法并传递一个 PeriodicTaskResourceIntensiveTask添加到后台代理中时,无论在256MB的设备或者256MB的模拟器上,触发一个 InvalidOperationException异常,这表明已经达到了设备后台代理的最大值。
如果你在应用程序中使用一个背景代理,而且希望您的应用程序能够运行在所有类型的设备上,那么你应该检查设备的工作内存,并在256MB的设备上不使用后台代理。例如,如果你使用一个 PeriodicTask控件来为应用程序来更新活动磁贴,那么在256MB的设备上你应该禁用活动磁贴更新,而只提供静态磁贴。有一个例子演示了如何检查该值和如何禁用应用程序中的某些功能,请参阅 如何:在256MB的设备上禁用应用程序的某些功能。
 
减少图形和音频的内存使用
在开发针对256MB内存手机上运行的应用程序和游戏的时侯,开发者应该在游戏或应用程序中谨慎使用图形。图形和音频内存往往是不分页的。过多的音频或图像资源、纹理和动画可能会超过256MB设备的内存限制。使用 XNA ®Framework构建的游戏,非常典型地使用大量图形和音频,这需要特别注意。如果您的应用程序或游戏超过了运行它们的设备的内存上限, OutofMemoryException异常就会触发并且应用程序也将意外退出。
如果图形内存使用接近于设备的工作集上限,您应该试图优化应用程序的性能以便它能在256MB的设备上运行。关于在你的游戏或应用程序中减少内存使用的详细技术的更多信息,请参阅 改善XNA游戏的内存使用
 
降低内存使用的其他注意事项
以下是开发一个在256MB设备上运行的应用程序的其他注意事项列表。
如果可能的话使用启动器和选择器。如果你在应用程序中使用 WebBrowser控件, Windows Phone版本的Bing MapsSilverlight控件,或者照相机,请务必测试您的应用程序使用多少内存,记忆应用程序在256MB的Windows Phone模拟器上是否能流畅运行。为了减少应用程序占用的内存,您应该使用这些控件对应的启动器和选择器。关于在Windows Phone上使用启动器的更多信息,请参阅 Windows Phone 的启动器Windows Phone的选择器
避免长列表的数据,如果使用它们,请确保它们是分页的。每次加载需要的数据。
避免带图像的复杂的Item模板
在页面跳转上避免复杂的动画效果。包括在 Windows Phone Silverlight Toolkit中包含了的跳转效果。如果你使用跳转效果,确保你的应用程序保持响应,并测试你的应用程序在页面跳转期间的内存使用情况。
注意如果在运行一个应用程序时用户改变了手机的方向,应用程序使用的内存可能达到峰值。你也应该在方向改变的情况下测试应用程序,如果您的应用程序经常超过90MB内存的上限,那就选择不支持256MB内存的设备。
对于一般的性能指导,例如缩短启动时间,如何向用户报告进度和其他提示,请参阅 Windows Phone应用程序中的性能注意事项
 
u 支持多种所有内存大小的手机设备类型的应用程序和游戏的测试和调试
使用Windows Phone SDK 7.1.1Update,你可以在256MB的Windows Phone模拟器上运行你的应用程序。在安装完Windows Phone SDK7.1.1Update之后,你可以在标准工具栏上的以下选项中选择:
Windows Phone设备
Windows Phone 模拟器—512MB
Windows Phone 模拟器—256MB
如果没有设备,你可以使用256MB的模拟器来帮助确定在256MB的设备上你的应用程序或游戏的响应速度和性能。
   你也可以使用Windows Phone SDK 7.1中就包含的工具来估计内存的使用情况以及优化应用程序的性能。你可以使用Windows PhoneMarketplace Test Kit来估计应用程序使用的所有内存。关于Windows PhoneMarketplace Test Kit的更多信息,请参阅MSDN上的 Windows Phone Marketplace Test Kit。使用Windows Perfomance Analysis Tool来查看内存的使用情况以及优化应用程序的性能。更多信息,请参阅 Windows Phone Performance  Analysis
 
u 使用应用程序配置清单选择不支持 256MB 设备类型
如果你测试应用程序,确定它不满足256MB设备的内存要求,你必须在应用程序配置清单里标明。如果你不这样做的话,使用256MB设备的用户会下载并安装你的应用程序。即使它能在较高内存的设备上运行良好,这也可能会导致应用程序的差评。如果选择开发的应用程序不支持256MB的设备,请在配置清单上添加一部分说明你的应用程序需要90MB的内存。在市场接收的过程中,配置清单的这部分不会被去掉。若要在配置清单上添加90MB内存的需求,请按以下步骤操作:
1.     在WMAppManifest.xml文件中 Capabilities 之后添加 Requirements 部分。
2.     Requirements 部分添加一个 Requirement 元素。为 Requirement 元素添加一指定的 Name 属性,设置其值为 ID_REQ_MEMORY_90
 
以下代码演示了如何完成该操作:
</Capabilities>
<Requirements>
      <Requirement Name="ID_REQ_MEMORY_90" />
</Requirements>
 
注意
Visual Studio不会根据该需求阻止你将应用程序部署到256MB的模拟器或256MB的设备上。该需求仅防止Marketplace将您的应用程序展示给使用256MB设备的用户。
 
u 也可参阅
其他资源

 

本文转自 飞雁 51CTO博客,原文链接:http://blog.51cto.com/felixyan/831667 ,如需转载请自行联系原作者

相关文章
|
7月前
|
智能硬件 Windows
在钉钉中,Windows智能硬件设备如何接入?
在钉钉中,Windows智能硬件设备如何接入?
69 1
|
4月前
|
存储 缓存 Java
释放C盘空间:释放Windows休眠文件和关闭虚拟内存
在 Windows 11 专业版中,可以通过以下步骤来释放休眠文件(Hibernate File),以释放磁盘空间。休眠文件是系统休眠(Hibernate)功能所需要的文件,它保存了系统的当前状态,以便在休眠状态下恢复。如果你不使用休眠功能,如果因为C盘空间不足,可以考虑释放这个文件来腾出磁盘空间。
4696 0
|
7天前
|
Android开发
Android 设备清理内存 RAM
Android 设备清理内存 RAM
9 0
|
4月前
|
C++ Windows
windows下内存检测工具
windows下内存检测工具
|
5月前
|
缓存 C# Windows
一款.NET开源的小巧、智能、免费的Windows内存清理工具 - WinMemoryCleaner
一款.NET开源的小巧、智能、免费的Windows内存清理工具 - WinMemoryCleaner
|
5月前
|
存储 安全 数据安全/隐私保护
3.2 Windows驱动开发:内核CR3切换读写内存
CR3是一种控制寄存器,它是CPU中的一个专用寄存器,用于存储当前进程的页目录表的物理地址。在x86体系结构中,虚拟地址的翻译过程需要借助页表来完成。页表是由页目录表和页表组成的,页目录表存储了页表的物理地址,而页表存储了实际的物理页框地址。因此,页目录表的物理地址是虚拟地址翻译的关键之一。在操作系统中,每个进程都有自己的地址空间,地址空间中包含了进程的代码、数据和堆栈等信息。为了实现进程间的隔离和保护,操作系统会为每个进程分配独立的地址空间。在这个过程中,操作系统会将每个进程的页目录表的物理地址存储在它自己的CR3寄存器中。当进程切换时,操作系统会修改CR3寄存器的值,从而让CPU使用新的页
66 0
3.2 Windows驱动开发:内核CR3切换读写内存
|
6月前
|
存储 安全 API
3.5 Windows驱动开发:应用层与内核层内存映射
在上一篇博文`《内核通过PEB得到进程参数》`中我们通过使用`KeStackAttachProcess`附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我们将实现一个更加有趣的功能,在某些情况下应用层与内核层需要共享一片内存区域通过这片区域可打通内核与应用层的隔离,此类功能的实现依附于MDL内存映射机制实现。
63 0
3.5 Windows驱动开发:应用层与内核层内存映射
|
6月前
|
安全 Windows
3.3 Windows驱动开发:内核MDL读写进程内存
MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式。在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的。因此,要在一个进程中读取或写入另一个进程的内存数据,需要先将目标进程的物理内存映射到当前进程的虚拟地址空间中,然后才能进行内存读写操作。
49 0
3.3 Windows驱动开发:内核MDL读写进程内存
|
6月前
|
安全 PHP 网络虚拟化
windows内存取证-简单
作为 Security Blue 团队的成员,您的任务是使用 Redline 和 Volatility 工具分析内存转储。您的目标是跟踪攻击者在受感染计算机上采取的步骤,并确定他们如何设法绕过网络入侵检测系统“NIDS”。您的调查将涉及识别攻击中使用的特定恶意软件系列及其特征。此外,您的任务是识别和缓解攻击者留下的任何痕迹或足迹。
|
6月前
|
安全 文件存储 数据安全/隐私保护
windows内存取证-中等难度-下篇
承接上文,我们继续学习