为内存为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 ,如需转载请自行联系原作者

相关文章
|
2月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
187 77
|
2月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
128 62
|
2月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
72 31
|
2月前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
43 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
28天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
2月前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
51 6
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
63 1
|
2月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
47 3
|
2月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
2月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install